Cod sursa(job #378293)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 28 decembrie 2009 11:04:20
Problema Restante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int n,orig;
char s[21];
struct rest
{
    int car[27];
};
rest f[36005];
int cmp(const rest &a,const 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,rp=0;
    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)
            rp=1;
        else
           if(rp==0)
               orig++;
    }
    if(rp==0)
        orig++;
    printf("%d\n",orig);
    return 0;
}