Cod sursa(job #1811402)

Utilizator plecinspaniaCapsunar plecinspania Data 21 noiembrie 2016 10:45:21
Problema Restante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("restante.in");
ofstream fout("restante.out");
char a[20];int n,viz[36002];

struct cuv
{
    int t[30];
};
inline bool cmp(const cuv A,const cuv B)
{
    int i;
    for(i=0;i<=27;i++)
        if(A.t[i]<B.t[i]) return A.t[i];
    return A.t[i]<=B.t[i];
}
cuv v[36002];
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();
    sort(v+1,v+n+1,cmp);
}

inline void Compara(int i,int j)
{
    int pas;
    for(pas=0;pas<=27;pas++)
        if(v[i].t[pas]<v[j].t[pas]||v[i].t[pas]>v[j].t[pas]) return;
     viz[i]=viz[j]=1;
}

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

int main()
{
    Citire();
    Rezolvare();
    return 0;
}