Ir ao conteúdo

Posts recomendados

Postado

Não poste uma imagem do código. Poste o código, como descrito no tópico inicial do forum.

 

Isso que postou é compilável em C++. O que quer fazer?

 

 

  • Amei 1
Postado

Esse é um programa C, mas pode ser compilado por um compilador C++ e vai rodar igual. Acho que é uma maneira comum de escrever isso em C, exceto por alocar o vetor estático.

 

Uma opção em C++ usando conjuntos podia ser

 

#include <algorithm>
#include <fstream>
#include <iostream>
#include <unordered_set>
#include <utility>
using Conjunto = std::unordered_set<int>;
using Par      = std::pair<Conjunto::iterator, bool>;
using Ii_int   = std::istream_iterator<int>;

int main(void)
{
    Conjunto presentes{};  // para os bilhetes
    Conjunto clonados{};   // para os clones
    auto     publico  = 0;
    auto     bilhetes = 0;
    auto     estado   = 0;
    Par      res;
    auto     maquina = [&](auto& valor) -> void
    {   switch (estado)
        {   case 0:
                if (valor == 0)
                {   estado = 3;
                    break;
                }
                bilhetes = valor;
                std::cout << bilhetes << " Bilhetes ";
                estado = 1;
                break;
            case 1:
                publico = valor;
                std::cout << publico << " Presentes\n";
                estado = 2;
                break;
            case 2:
                res = presentes.insert(valor);
                if (not res.second) clonados.insert(valor);
                publico -= 1;
                if (0 == publico)
                {
                    std::cout << presentes.size() << " unico (s) "
                              << clonados.size() << " clone (s)\n";
                    presentes.clear();
                    clonados.clear();
                    estado = 0;
                }
                break;
            case 3:  // saindo
                if (valor == 0) return;
                estado = 0;
                break;
        };  // switch()
    };
    std::ifstream f{"entrada.txt"};
    Ii_int        iis{f}, fim{};
    for_each(iis, fim, maquina);
    return 0;
}

 

Para esse arquivo, o de exemplo do problema

 

5 5
3 3 1 2 4
6 10
6 1 3 6 6 4 2 3 1 2
0 0

 

Mostra

 

5 Bilhetes 5 Presentes
4 unico (s) 1 clone (s)
6 Bilhetes 10 Presentes
5 unico (s) 4 clone (s)

 

O tal problema, de Universidade Regional Integrada: Online Judge

 

E agora o URI não é mais URI!  :D

 

image.png.be628ef063b0f5b8f37ccc31cebd41d3.png

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...