Cod sursa(job #920874)

Utilizator muscaTudose Vlad-Adrian musca Data 20 martie 2013 17:42:35
Problema Restante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <cstdio>
#include <cstring>
using namespace std;
int a[36001][31];
char c[21];
int v[31];
int n,m,i,j,nr,numere;
bool egalitate(int x)
{
    int i;
    for(i=1;i<='z'-'a'+1;i++)
        if(a[x][i]!=v[i]){ a[x][0]=1; return false;}
    return true;
}
bool aparitie()
{
    int i;
    for(i=1;i<=nr;i++)
        if(egalitate(i)==true)
            return true;
    return false;
}
void reset()
{
    int j;
    for(j=1;j<='z'-'a'+1;j++)
        v[j]=0;
}
int main()
{
    freopen("restante.in","r",stdin);
    freopen("restante.out","w",stdout);
    scanf("%d\n",&n);
    for(i=1;i<=n;i++)
    {
        gets(c);
        m=strlen(c)-1;
        for(j=0;j<=m;j++)
            v[c[j]-'a'+1]++;
        if(aparitie()==false)
        {
            nr++;
            for(j=1;j<='z'-'a'+1;j++)
                a[nr][j]=v[j];
        }
        reset();
    }
    for(i=1;i<=nr;i++)
        numere+=1-a[i][0];
    printf("%d\n",numere);
    return 0;
}