Pagini recente » Cod sursa (job #979869) | Cod sursa (job #2059694) | Cod sursa (job #1154802) | Cod sursa (job #2401546) | Cod sursa (job #397952)
Cod sursa(job #397952)
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define smax 36010
#define lmax 17
using namespace std;
FILE *f=fopen("restante.in","r"), *g=fopen("restante.out","w");
int k,sw,i,n;
char v[smax][lmax];
char v1[smax/2][lmax];
char v2[smax/2][lmax];
void ints(char a[], char b[])
{
char aux[17];
strcpy(aux, a);
strcpy(a, b);
strcpy(b, aux);
}
void merge(long ls, long ld)
{
if (ls<ld)
{
long k=(ls+ld)/2;
merge(ls,k);
merge(k+1,ld);
int n1=0,n2=0;
for (long i=ls;i<=k;i++)
strcpy(v1[++n1],v[i]);
for (long i=k+1;i<=ld;i++)
strcpy(v2[++n2],v[i]);
long i1=1;
long i2=1;
k=ls;
while (i1<=n1 && i2<=n2)
if (strcmp(v1[i1],v2[i2])<0)
strcpy(v[k++],v1[i1++]);
else
strcpy(v[k++],v2[i2++]);
while (i1<=n1)
strcpy(v[k++],v1[i1++]);
while (i2<=n2)
strcpy(v[k++],v2[i2++]);
}
}
int main()
{
fscanf(f, "%d", &n);
for(i=1;i<=n;i++)
{
fscanf(f, "%s", v[i]);
sort( v[i], v[i]+strlen(v[i]) );
}
merge(1,n);
for(i=1;i<=n;i++)
if( strcmp(v[i], v[i-1]) && strcmp(v[i],v[i+1]) )
k++;
fprintf(g,"%d", k);
return 0;
}