Pagini recente » Cod sursa (job #275676) | Cod sursa (job #2158172) | Cod sursa (job #2170072) | Cod sursa (job #2512546) | Cod sursa (job #1811307)
#include <cstdio>
#include <algorithm>
#include <bitset>
using namespace std;
int ff[30];
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';
if (ff[l]==0)
nr=nr+(1<<l);
ff[l]++;
c=fgetc (fin);
}
v[i].first=nr;
v[i].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 (verif(v[i-1].second,v[i].second)){
uni++;
st=0;
}
else
if (st==0){
st=1;
uni--;
}
}
fprintf (fout,"%d",uni);
return 0;
}