Pagini recente » Cod sursa (job #1100088) | Cod sursa (job #1276581) | Cod sursa (job #2240818) | Cod sursa (job #1111948) | Cod sursa (job #129882)
Cod sursa(job #129882)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct thingy
{
char c[22];
};
thingy v[36001];
int sol=0;
int cmp(const void *a, const void *b)
{
return (*(char*)a-*(char*)b);
}
int cmp2(const void *a, const void *b)
{
thingy x=*(thingy*)a, y=*(thingy*)b;
if (strlen(x.c)>strlen(y.c))
return 1;
if (strlen(x.c)<strlen(y.c))
return -1;
int k=strlen(x.c),i;
for (i=0; i<k; i++)
if (x.c[i]>y.c[i])
return 1;
else
if (x.c[i]<y.c[i])
return -1;
return 0;
}
int cmp3(int x, int y)
{
if (strlen(v[x].c)>strlen(v[y].c))
return 1;
if (strlen(v[x].c)<strlen(v[y].c))
return -1;
int k=strlen(v[x].c),i;
for (i=0; i<k; i++)
if (v[x].c[i]>v[y].c[i])
return 1;
else
if (v[x].c[i]<v[y].c[i])
return -1;
return 0;
}
int main ()
{
int i,k,n;
char whateva[20];
FILE *in = fopen("restante.in","r");
FILE *out = fopen("restante.out","w");
fscanf (in,"%d",&n);
if (n==1)
{
fprintf(out,"1\n");
fclose(out);
fclose(in);
return 0;
}
fgets(whateva,20,in);
k=sizeof(v[0].c[0]);
for (i=0; i<n; i++)
{
fgets(v[i].c,20,in);
if (v[i].c[strlen(v[i].c)-1]=='\n')
v[i].c[strlen(v[i].c)-1]=0;
qsort(v[i].c,strlen(v[i].c),k,cmp);
}
qsort(v,n,sizeof(v[0]),cmp2);
if (cmp3(0,1)!=0)
sol++;
if (cmp3(n-1,n-2)!=0)
sol++;
for (i=1; i<n-1; i++)
if (cmp3(i-1,i)!=0 && cmp3(i,i+1)!=0)
sol++;
fprintf(out,"%d\n",sol);
fclose(in);
fclose(out);
return 0;
}