Cod sursa(job #3153907)

Utilizator sorinturdaSorin Turda sorinturda Data 2 octombrie 2023 09:02:32
Problema Restante Scor 50
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
//https://www.infoarena.ro/problema/restante
#include <stdio.h>
#include <stdlib.h>
const int M = 36000, P = 31;



int main() {
    freopen("restante.in", "r", stdin);
    freopen("restante.out", "w", stdout);
    int n;
    int *mp = malloc(M * sizeof(int));
    for (int i = 0; i < M; i++)
        mp[i] = 0;
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        char s[17], f['z' + 1];
        for (int j = 'a'; j <= 'z'; j++)f[j] = 0;
        scanf("%s", s);
        for (int j = 0; s[j]; j++)
            f[s[j]]++;
        int p = 1;
        int key = 0;
        for (int j = 'a'; j <= 'z'; j++) {
            for (int k = 0; k < f[j]; k++) {
                key += p * j;
                key %= M;
                p *= 31;
                p %= M;
            }
        }
        mp[key]++;
    }
    int ans = 0;
    for (int i = 0; i < M; i++)
        if (mp[i] == 1)
            ans++;
    printf("%d\n", ans);
    return 0;
}