Pagini recente » Cod sursa (job #288056) | Cod sursa (job #1001114) | Monitorul de evaluare | Profil Pami1928 | Cod sursa (job #132574)
Cod sursa(job #132574)
#include<stdio.h>
#include<string.h>
FILE*f=fopen("restante.in","r");
FILE*g=fopen("restante.out","w");
char a[35065][19];
long n;
int Divide(int p, int q) //liniile
{
int st=p,dr=q;
char x[1000];
strcpy(x,a[p]);
while(st<dr)
{
while(st<dr && strcmp(a[dr],x)>=0) --dr;
strcmp(a[st],a[dr]);
while(st<dr && strcmp(a[st],x)<=0) ++st;
strcpy(a[dr],a[st]);
}
strcpy(a[st],x);
return st;
}
void QSort(int p, int q)
{
int m=Divide(p,q);
if(m-1>p) QSort(p,m-1);
if(m+1<q) QSort(m+1,q);
}
void sorteaza_linia(int p) //sortez elementele de pe linia p
{
long i,j,frecv[28];
for(i=0;i<=26;++i) frecv[i]=0;
long n, nr=0;
n=strlen(a[p]);
for(i=0;i<n;++i) frecv[a[p][i]-97]++;
for(i=0;i<26;++i)
{
while(frecv[i])
{
a[p][nr++]=char(i+97);
frecv[i]--;
}
}
}
long platouri() //returnez numarul de platouri
{
long sol=0;
long i,j;
for(i=1;i<n;++i)
if(strcmp(a[i],a[i+1])!=0) sol++;
else
while(strcmp(a[i],a[i+1])==0) ++i;
if(strcmp(a[n],a[n-1])!=0) sol++;
return sol;
}
void read()
{
fscanf(f,"%ld\n",&n);
for(long i=1;i<=n;++i)
{
fscanf(f,"%s\n",a[i]);
sorteaza_linia(i);
}
}
int main()
{
read();
QSort(1,n);
long sol;
sol=platouri();
fprintf(g,"%ld\n",sol);
return 0;
}