Salve, pessoal! Mais um problema Ad-hoc! A solulão do Mergulho está aqui para vocês! Bom proveito a todos!
Plataforma: URI (BEECROWD)
Problema: 1471
Enunciado:
O recente terremoto em Nlogônia não chegou a afetar muito as edificações da capital, principal epicentro do abalo. Mas os cientistas detectaram que o principal dique de contenção teve um dano significativo na sua parte subterrânea que, se não for consertado rapidamente, pode causar o seu desmoronamento, com a consequente inundação de toda a capital.
O conserto deve ser feito por mergulhadores, a uma grande profundidade, em condições extremamente difíceis e perigosas. Mas como é a sobrevivência da própria cidade que está em jogo, seus moradores acudiram em grande número como voluntários para essa perigosa missão.
Como é tradicional em missões perigosas, cada mergulhador recebeu no início do mergulho uma pequena placa com um número de identificação. Ao terminar o mergulho, os voluntários devolviam a placa de identificação, colocando-a em um repositório.
O dique voltou a ser seguro, mas aparentemente alguns voluntários não voltaram do mergulho. Você foi contratado para a penosa tarefa de, dadas as placas colocadas no repositório, determinar quais voluntários perderam a vida salvando a cidade.
Linguagens: C e C++
Solução:
Código em C:
#define TAM 10000 #include <stdio.h> #include <string.h> int main() { int n, r, v, i, mergulhadores[TAM] = {0}; while (scanf("%d %d", &n, &r) != EOF) { i = r; while (i--) { scanf("%d", &v); mergulhadores[v-1] = 1; } if (n == r) printf("*\n"); else { for (i = 0; i < n; i++) if (!mergulhadores[i]) printf("%d ", i + 1); printf("\n"); } memset(mergulhadores, 0, TAM); } return 0; }
Código em C++:
Basicamente a mesma solução, mas utilizei vector.
#include <algorithm> #include <iostream> #include <vector>
using namespace std;
int main() { int n, r, v, i; vector<int> mergulhadores(10000, 0); while (cin >> n >> r) { i = r; while (i--) { cin >> v; mergulhadores.push_back(v); } if (n == r) cout << "*" << endl; else { for (i = 0; i < n; i++) if (!(find(mergulhadores.begin(),mergulhadores.end(),i+1) != mergulhadores.end())) cout << i + 1 << " "; cout << endl; } mergulhadores.clear(); } return 0; }
Nenhum comentário:
Postar um comentário