Cod sursa(job #1975833)

Utilizator radiogard1999Dragoi Andrei radiogard1999 Data 2 mai 2017 10:33:35
Problema Restante Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <bits/stdc++.h>
#define Nmax 36005
using namespace std;
ifstream fin("restante.in");
ofstream fout("restante.out");
int n,sol[Nmax];
struct sir
{
    int t[28];
};
inline bool cmp(const sir A,const sir B)
{
    int i=0;
    while(i<=27)
    {
        if(A.t[i]==B.t[i]) i++;
        else return A.t[i]<B.t[i];
        i++;
    }
    return A.t[i]<=B.t[i];
}
sir v[Nmax];
char a[20];
void Citire()
{
    int i,j;
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>(a+1);
        for(j=1;a[j];j++)
            v[i].t[a[j]-'a']++;
    }
    fin.close();
}
inline bool Compara(int x,int y)
{
    int i;
    for(i=0;i<=27;i++)
        if(v[x].t[i]!=v[y].t[i]) return false;
    return true;
}
void Rezolvare()
{
    int i;
    sort(v+1,v+n+1,cmp);

    for(i=2;i<=n;i++)
        if(Compara(i,i-1))
    {
        sol[i]=1;
        sol[i-1]=1;
    }
    int cnt=n;
    for(i=1;i<=n;i++)
        cnt-=sol[i];
    fout<<cnt<<"\n";
    fout.close();
}
int main()
{
    Citire();
    Rezolvare();
    return 0;
}