Jornada nas Estrelas! Este é o problema resolvido e postado aqui. Espero que curtam essas soluções!!!! :)
Plataforma: URI (BEECROWD)
Problema: 1973
Enunciado:
Após comprar vários sítios adjacentes na região do oeste catarinense, a família Estrela construiu uma única estrada que passa por todos os sítios em sequência. O primeiro sítio da sequência foi batizado de Estrela 1, o segundo de Estrela 2, e assim por diante. Porém, o irmão que vive em Estrela 1 acabou enlouquecendo e resolveu fazer uma Jornada nas Estrelas para roubar carneiros das propriedades de seus irmãos. Mas ele está definitivamente pirado. Quando passa pelo sítio Estrela i, ele rouba apenas um carneiro daquele sítio (se o sítio tem algum) e segue ou para Estrela i + 1 ou para Estrela i - 1, dependendo se o número de carneiros em Estrela i era, respectivamente, ímpar ou par. Se não existe a Estrela para a qual ele deseja seguir, ele interrompe sua jornada. O irmão louco começa sua Jornada em Estrela 1, roubando um carneiro do seu próprio sítio.
Linguagens: C e C++
Solução:
Código em C:
#include <stdio.h> int main() { long long int n, indice, estrelasAtacadas = 0, carneirosRestantes = 0; scanf("%llu", &n); long long int valores[n], copia[n]; for (indice = 0; indice < n; indice++) { scanf("%llu", &valores[indice]); copia[indice] = 0; } indice = 0; while (indice >= 0 && indice < n) { if (valores[indice] == 0) indice--; else { valores[indice]--; copia[indice] = 1; if (valores[indice] & 1) indice--; else indice++; } } for (indice = 0; indice < n; indice++) { carneirosRestantes += valores[indice]; if (copia[indice]) estrelasAtacadas++; } printf("%llu %llu\n", estrelasAtacadas, carneirosRestantes); return 0; }
#include <iostream> using namespace std; int main() { long long int n, indice, estrelasAtacadas = 0, carneirosRestantes = 0; cin >> n; long long int valores[n], copia[n]; for (indice = 0; indice < n; indice++) { cin >> valores[indice]; copia[indice] = 0; } indice = 0; while (indice >= 0 && indice < n) { if (valores[indice] == 0) indice--; else { valores[indice]--; copia[indice] = 1; if (valores[indice] & 1) indice--; else indice++; } } for (indice = 0; indice < n; indice++) { carneirosRestantes += valores[indice]; if (copia[indice]) estrelasAtacadas++; } cout << estrelasAtacadas << " " << carneirosRestantes << endl; return 0; }
Nenhum comentário:
Postar um comentário