Pagini recente » Cod sursa (job #1564809) | Cod sursa (job #119584) | Cod sursa (job #2900956) | Cod sursa (job #1090461) | Cod sursa (job #126102)
Cod sursa(job #126102)
#include<stdio.h>
#include<string.h>
long int n,i,fr[28],l[36001],j,sol;
char sir[20],dic[36001][20];
void heapdown(long int ii, long int nn);
void swap(long int ii, long int jj);
int main()
{ FILE *f=fopen("restante.in","r"), *g=fopen("restante.out","w");
fscanf(f,"%ld",&n);
for(i=1;i<=n;i++)
{ fscanf(f,"%s",sir);
for(j=0;j<strlen(sir);j++) fr[(long int)(sir[j]-'a')]++;
for(j=0;j<26;j++) while(fr[j]){ dic[i][l[i]]='a'+(char)j;l[i]++;fr[j]--;}
}
for(i=n/2;i>=1;i--) heapdown(i,n);
for(i=n;i>=1;i--){ swap(1,i); heapdown(1,i-1);}
for(i=1;i<=n;i++)
if(strcmp(dic[i],dic[i-1]))
if(strcmp(dic[i],dic[i+1])) sol++;
fprintf(g,"%ld",sol);
fcloseall();
return 0;
}
void heapdown(long int ii, long int nn)
{ long int is,id;
is=2*ii;
id=2*ii+1;
if(is>nn) return;
if(is<nn) if(strcmp(dic[is],dic[id])<0) is=id;
if(strcmp(dic[ii],dic[is])<0) { swap(ii,is); heapdown(is,nn);}
}
void swap(long int ii, long int jj)
{
char daux[20];
strcpy(daux,dic[ii]);
strcpy(dic[ii],dic[jj]);
strcpy(dic[jj],daux);
}