Plataforma: URI (BEECROWD)
Problema: 2779
Enunciado:
Em ano de Copa do Mundo de Futebol, o álbum de figurinhas oficial é sempre um grande sucesso entre crianças e também entre adultos. Para quem não conhece, o álbum contém espaços numerados de 1 a N para colar as figurinhas; cada figurinha, também numerada de 1 a N, é uma pequena foto de um jogador de uma das seleções que jogará a Copa do Mundo. O objetivo é colar todas as figurinhas nos respectivos espaços no álbum, de modo a completar o álbum (ou seja, não deixar nenhum espaço sem a correspondente figurinha).
As figurinhas são vendidas em envelopes fechados, de forma que o comprador não sabe quais fi- gurinhas está comprando, e pode ocorrer de comprar uma figurinha que ele já tenha colado no álbum.
Para ajudar os usuários, a empresa responsável pela venda do álbum e das figurinhas quer criar um aplicativo que permita gerenciar facilmente as figurinhas que faltam para completar o álbum e está solicitando a sua ajuda.
Dados o número total de espaços e figurinhas do álbum, e uma lista das figurinhas já compradas (que pode conter figurinhas repetidas), sua tarefa é determinar quantas figurinhas faltam para completar o álbum.
Linguagens: C e C++
Solução:
Basta ler dois valores ("n" e "x") e inicializar "r" (a variável da resposta) com o valor de "n" e uma estrutura de dados array (array ou vector, no caso de C++) com zeros. Isso pode ser feito de diversas formas, eu fiz com um for atribuindo zero a cada posição. Ao ler o valor "v" por "x" vezes, o valor da v-ésima posição deve ser 1. Nosso índice deve ser v-1 porque começamos com o índice zero. Depois disso, basta testar, para cada valor do array, se o valor é diferente de zero, decrementando r caso positivo, assim saberemos quantas figurinhas faltam para completar o álbum. Depois disso, basta imprimir "r", com quebra de linha ao final.
Os códigos abaixo fazem a mesma coisa.
Código em C:
#include <stdio.h> int main() { int n, x, i, v; scanf("%d %d ", &n, &x); int f[n], r = n; for (i = 0; i < n; i++) f[i] = 0; for (i = 0; i < x; i++) { scanf("%d", &v); f[v-1] = 1; } for (i = 0; i < n; i++) if (f[i]) r--; printf("%d\n", r); return 0; }
#include <iostream> using namespace std; int main() { int n, x, i, v; cin >> n >> x; int f[n], r = n; for (i = 0; i < n; i++) f[i] = 0; for (i = 0; i < x; i++) { cin >> v; f[v-1] = 1; } for (i = 0; i < n; i++) if (f[i]) r--; cout << r << endl; return 0; }
Nenhum comentário:
Postar um comentário