Pagini recente » Cod sursa (job #1173471) | Cod sursa (job #2510055) | Cod sursa (job #1382094) | Cod sursa (job #1178184) | Cod sursa (job #1810807)
#include <cstdio>
#include <algorithm>
#include <bitset>
using namespace std;
int ff[30];
pair <int,pair<int,int> > v[36001];
int a[36001][30];
int verif (int x,int y){
for (int j=0;j<30;j++)
if (a[x][j]!=a[y][j])
return 1;
return 0;
}
int main()
{
FILE *fin=fopen ("restante.in","r");
FILE *fout=fopen ("restante.out","w");
int n,i,nr,uni,st,l;
char c;
fscanf (fin,"%d\n",&n);
for (i=1;i<=n;i++){
c=fgetc (fin);
nr=0;
for (int j=0;j<30;j++){
a[i-1][j]=ff[j];
ff[j]=0;
}
while (c!='\n'){
l=c-'a';
v[i].second.first++;
if (ff[l]==0)
nr=nr+(1<<l);
ff[l]++;
c=fgetc (fin);
}
v[i].first=nr;
v[i].second.second=i;
}
for (int j=0;j<30;j++)
a[n][j]=ff[j];
sort (v+1,v+n+1);
uni=0;
st=0;
for (i=1;i<=n;i++){
if (v[i].first!=v[i-1].first || v[i].second.first!=v[i-1].second.first || verif(v[i-1].second.second,v[i].second.second)){
uni++;
st=0;
}
else
if (st==0){
st=1;
uni--;
}
}
fprintf (fout,"%d",uni);
return 0;
}