Cod sursa(job #1551977)

Utilizator bciobanuBogdan Ciobanu bciobanu Data 16 decembrie 2015 23:01:38
Problema Restante Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <cstdio>
#include <cstring>
#include <cctype>

#define MaxN 360000
#define MaxL 16
#define Sigma 26
#define MOD 1572869
#define BASE 37

char s[MaxL + 1];
unsigned short freq[Sigma];
unsigned short freqHash[MOD];

int main(void) {
    freopen("restante.in", "r", stdin);
    freopen("restante.out", "w", stdout);
    int N, q;
    char c;

    scanf("%d\n", &N);
    for (int i = 0; i < N; i++) {
        do {
            c = getchar();
        } while (!isalpha(c));
        do {
            freq[c - 'a']++;
            c = getchar();
        } while (isalpha(c));
        q = 0;
        for (int j = 0; j < Sigma; j++) {
            while (freq[j] > 0) {
                q = (q * BASE + j) % MOD;
                freq[j]--;
            }
        }
        freqHash[q]++;
    }
    fclose(stdin);

    q = 0;
    for (int i = 0; i < MOD; i++) {
        q += (freqHash[i] == 1);
    }
    printf("%d\n", q);
    fclose(stdout);
    return 0;
}