2174 - Coleção de Pomekon

Usando a estrutura de dados de conjuntos, o problema se torna muito mais fácil.

Descrição

Solução

Em todas as linguagens que possuem suporte para tal, você pode usar conjuntos para guardar os nomes de todos os Pomekons que você for encontrando e no final apenas subtrair 151 da quantidade de Pomekons diferentes que você encontrou.

Para linguagens que não possuem esse suporte, você pode ir colocando os Pomekons em um vetor e a cada novo Pomekon ver se ele já não está no vetor, mas tenha em mente que esse é um processo muito mais custoso do que usar conjuntos (complexidade de O(N²) versus O(N)). Felizmente, estamos lidando com apenas 1000 pomekons diferentes, então a complexidade quadrática é aceitável.

#include <string.h>
#include <stdio.h>

char pomekons[1001][101];

int busca(char* pomekon, int n){
    for(int i = 0; i < n; ++i){
        if(!strcmp(pomekons[i], pomekon))   return i;
    }

    return -1;
}

int main(){
    int N, p;
    char S[1001];

    memset(pomekons, '\0', sizeof(pomekons));

    scanf("%d\n", &N);
    
    p = 0;
    for(int i = 0; i < N; ++i){
        scanf("%s\n", &S);

        if(busca(S, N) == -1)   strcpy(pomekons[p++], S);
    }

    printf("Falta(m) %d pomekon(s).\n", 151 - p);

    return 0;
}

Last updated