Pagini recente » Cod sursa (job #2675803) | Cod sursa (job #1000878) | Cod sursa (job #2542443) | Cod sursa (job #1254611) | Cod sursa (job #611457)
Cod sursa(job #611457)
#include<stdio.h>
#include<string.h>
#define N 36001
long n,i,v[N],j,k,l,x[28];
char s[N][16],r[N][16];
void merge(char s[N][16],int p,int q)
{int i,j,k,m=(p+q)/2;
if(p==q)
return;
merge(s,p,m);
merge(s,m+1,q);
for(i=k=p,j=m+1;i<=m||j<=q;)
if(j>q||(i<=m&&strcmp(s[i],s[j])<0))
strcpy(r[k++],s[i++]);
else
strcpy(r[k++],s[j++]);
for(i=p;i<=q;i++)
strcpy(s[i],r[i]);}
int main()
{freopen("restante.in","r",stdin);
freopen("restante.out","w",stdout);
scanf("%ld",&n);
for(i=0;i<n;i++)
{scanf("%s",s[i]);
v[i]=strlen(s[i]);
for(j=0;j<28;j++)
x[j]=0;
for(j=0;j<v[i];j++)
x[s[i][j]-'a']++;
for(j=l=0;j<28&&l<16;j++)
for(k=0;k<x[j];k++)
s[i][l++]=j+'a';}
merge(s,0,n-1);
for(i=1,l=0;i<n;i++)
if(strcmp(s[i],s[i-1]))
l++;
printf("%ld",l);
return 0;}