Cod sursa(job #518350)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 31 decembrie 2010 12:01:06
Problema Restante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>
#include <algorithm>

using namespace std;

char v[36001][17],x;
int n,ind[36001],o,f,ok;

int cmp(int i,int j)
{
    int a=1;
    while ((a<17)&&(v[i][a]==v[j][a])) ++a;
    if (a==17) return 0;
    return v[i][a]<v[j][a];
}

int main()
{
    int i,j;
    freopen("restante.in","r",stdin);
    freopen("restante.out","w",stdout);
    scanf("%d\n",&n);
    for (i=1;i<=n;++i)
    {
        v[i][0]=' ';j=0;
        x=fgetc(stdin);
        while ((x!='\n')&&(x!=EOF))
        {
            ++j;
            v[i][j]=x;
            x=fgetc(stdin);
        }
        for (j=j+1;j<=16;++j) v[i][j]=' ';
        sort(v[i]+1,v[i]+17);
    }
    for (i=1;i<=n;++i) ind[i]=i;
    sort(ind+1,ind+n+1,cmp);
    for (i=2;i<=n;++i)
    {
        ok=1;
        for (j=1;j<17;++j) if (v[i][j]!=v[i-1][j]) ok=0;
        if (ok) ++o;
        else
        {
            f+=o+1;
            o=0;
        }
    }
    if (o) f+=o+1;
    printf("%d",n-f);
    return 0;
}