Cod sursa(job #378287)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 28 decembrie 2009 10:45:48
Problema Restante Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int n,orig,viz[36005];
char s[21];
struct rest
{
    int car[27];
};
rest f[36005];
int cmp(rest a,rest b)
{
    int p=0;
    while(p<=26 && a.car[p]==b.car[p])
        p++;
    if(p==27)
        p--;
    return (a.car[p]<b.car[p]);
}
int main ()
{
    int i,nr,j;
    freopen("restante.in","r",stdin);
    freopen("restante.out","w",stdout);
    scanf("%d\n",&n);
    for(i=1;i<=n;i++)
    {
        gets(s);
        nr=strlen(s);
        for(j=0;j<nr;j++)
            f[i].car[s[j]-'a'+1]++;
        f[i].car[0]=nr;
    }
    sort(f+1,f+n+1,cmp);
    for(i=1;i<=n-1;i++)
    {
        for(j=0;j<=26;j++)
            if(f[i].car[j]!=f[i+1].car[j])
                break;
        if(j==27)
        {
            viz[i]=1;
            viz[i+1]=1;
        }
    }
    for(i=1;i<n;i++)
        if(viz[i]==0)
            orig++;
    printf("%d\n",orig);
    return 0;
}