Pesquisar este blog

Livros Recomendados

terça-feira, 29 de dezembro de 2020

URI - 1110 - Jogando Cartas Fora - Estruturas e Bibliotecas - C++

Plataforma: URI

Problema1110

Enunciado:
Dada uma pilha de n cartas enumeradas de 1 até n com a carta 1 no topo e a carta n na base.  A seguinte operação é ralizada enquanto tiver 2 ou mais cartas na pilha.
Jogue fora a carta do topo e mova a próxima carta (a que ficou no topo) para a base da pilha.
Sua tarefa é encontrar a sequência de cartas descartadas e a última carta remanescente.
Cada linha de entrada (com exceção da última) contém um número n ≤ 50. A última linha contém 0 e não deve ser processada. Cada número de entrada produz duas linhas de saída. A primeira linha apresenta a sequência de cartas descartadas e a segunda linha apresenta a carta remanescente.

Linguagem: C++

Solução:

#include <algorithm>
#include <iostream>
#include <vector>

using namespace std;

int main() {
    int n, indice, elemento;
    vector<int> restantes, descartadas;
    
    while (1) {
        cin >> n;
        
        if (n == 0)
            break;
        
        while (n > 0)
            restantes.insert(restantes.begin(), n--);
        
        indice = 0;
        while (restantes.size() > 1) {
            descartadas.push_back(restantes.at(indice));
            restantes.erase(restantes.begin() + indice);
            elemento = restantes.at(indice);
            
            rotate(restantes.begin() + indice, restantes.begin() + indice + 1, restantes.end());
        }
        
        cout << "Discarded cards:" ;
        if (descartadas.size() > 1)
            cout << " " << descartadas.at(0);
        while (++indice < descartadas.size())
            cout << ", " << descartadas.at(indice);
        
        indice = 0;
        cout << endl << "Remaining card: ";
        while (indice < restantes.size())
            cout << restantes.at(indice++);

        cout << endl;
        
        descartadas.clear();
        restantes.clear();
    }

    return 0;
}

Nenhum comentário:

Postar um comentário

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas