Cod sursa(job #1563605)

Utilizator akaprosAna Kapros akapros Data 6 ianuarie 2016 12:56:07
Problema Restante Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>
#define maxN 36002
#define maxC 2100
#define maxA 26
#define maxL 17
using namespace std;
int prime[] = {17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97,
              101, 103, 107, 109, 113, 127, 131};
int n, m, sol, V[maxC][maxL], w[maxA];
char s[maxA];
void read()
{
    int i;
    freopen("restante.in", "r", stdin);
    scanf("%d\n", &n);
    while (n --)
    {
        gets(s);
        m = strlen(s);
        int crypt = 0;
        for (i = 0; i < m; ++ i)
            ++ w[s[i] - 'a'];
        for (i = 0; i < maxA; ++ i)
        {
            crypt = crypt + prime[i] * w[i];
            w[i] = 0;
        }
        ++ V[crypt][m];
    }
}
void solve()
{
    int i, j;
    for (i = 0; i < maxC - 1; ++ i)
        for (j = 1; j < maxL; ++ j)
        if (V[i][j] == 1)
            ++ sol;
}
void write()
{
    freopen("restante.out", "w", stdout);
    printf("%d", sol);
}
int main()
{
    read();
    solve();
    write();
    return 0;
}