Pagini recente » Cod sursa (job #3180551) | Cod sursa (job #837338) | Cod sursa (job #2437457) | Cod sursa (job #838311) | Cod sursa (job #125689)
Cod sursa(job #125689)
#include<stdio.h>
#include<string.h>
char a[30000][17],aa[17];
long n,i;
void merge(long st,long dr,long lin)
{long m,i,j,k,l;
if(st<dr)
{m=(st+dr)/2;
merge(st,m,lin);
merge(m+1,dr,lin);
i=st;
j=m+1;
l=-1;
while(i<=m&&j<=dr)
{if(a[lin][i]>a[lin][j]) {aa[++l]=a[lin][j]; ++j;}
else {aa[++l]=a[lin][i]; ++i;}
}
for(k=i;k<=m;++k) aa[++l]=a[lin][k];
for(k=j;k<=dr;++k) aa[++l]=a[lin][k];
for(k=st;k<=dr;++k) a[lin][k]=aa[k-st];
}
}
void merge1(int st,int dr)
{long m,i,j,k,l;
char aa[30000][17];
if(st<dr)
{m=(st+dr)/2;
merge1(st,m);
merge1(m+1,dr);
i=st;
j=m+1;
l=0;
while(i<=m&&j<=dr)
{if(strcmp(a[i],a[j])>1) {strcpy(aa[++l],a[j]); ++j;}
else {strcpy(aa[++l],a[i]); ++i;}
}
for(k=i;k<=m;++k) strcpy(aa[++l],a[k]);
for(k=j;k<=dr;++k) strcpy(aa[++l],a[k]);
for(k=st;k<=dr;++k) strcpy(a[k],aa[k-st+1]);
}
}
int main()
{long i,l;
freopen("restante.in","r",stdin);
freopen("restante.out","w",stdout);
scanf("%ld\n",&n);
for(i=1;i<=n;++i)
{
gets(a[i]);
merge(0,strlen(a[i])-1,i);
}
merge1(1,n);
l=n;
for(i=1;i<=n;++i)
if((strcmp(a[i],a[i+1])==0)||(strcmp(a[i],a[i-1])==0))
--l;
printf("%ld",l);
fcloseall();
return 0;
}