Cod sursa(job #323757)

Utilizator freak93Adrian Budau freak93 Data 13 iunie 2009 13:09:38
Problema Restante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 36005

using namespace std;

struct nod
{
    char s[20];
    int l;
} a[maxn];

int i,j,n,k,r[170];

bool fcomp(nod a,nod b)
{
    if(a.l!=b.l) return a.l<b.l;

    int i;
    for(i=0;a.s[i];++i)
        if(a.s[i]!=b.s[i])
            return a.s[i]<b.s[i];

    return false;
}

int main()
{
    freopen("restante.in","r",stdin);
    freopen("restante.out","w",stdout);

    scanf("%d\n",&n);

    for(i=1;i<=n;++i)
    {
        fgets(a[i].s,19,stdin);
        a[i].l=strlen(a[i].s);
        while(a[i].s[a[i].l-1]=='\n') a[i].s[--a[i].l]=0;
        k=a[i].l;
        sort(a[i].s,a[i].s+k);
    }

    sort(a+1,a+n+1,fcomp);

    k=0;

    for(i=1;i<=n;++i)
        if(strcmp(a[i].s,a[i-1].s)==0) a[i].l=-1,a[i-1].l=-1;

    for(i=1;i<=n;++i)
        if(a[i].l>-1)
            ++k;

    printf("%d\n",k);

    fclose(stdin);
    fclose(stdout);

    return 0;
}