Cod sursa(job #213493)
#include <iostream.h>
#include <stdlib.h>
#include <fstream.h>
#include <time.h>
#include<string.h>
using namespace std;
ifstream f ("restante.in");
ofstream o ("restante.out");
int aleator(int s,int d)
{return (rand()%(d-s+1))+s;}
int partitie(char a[36000][17],int s, int d)
{
char piv[17],aux[17]; int i,j;
int al;
al=aleator(s,d);
strcpy(aux,a[s]);
strcpy(a[s],a[al]);
strcpy(a[al],aux);
strcpy(piv,a[s]);
i=s-1;j=d+1;
while(i<j)
{
do j--;
while(strcmp(a[j],piv)>0);
do i++;
while(strcmp(a[i],piv)<0);
if(i<j)
{strcpy(aux,a[i]);
strcpy(a[i],a[j]);
strcpy(a[j],aux);
}
else return j;}
}
void insert(char a[17], int s, int d)
{
int i,j; char key;
for(j=s+1;j<=d;j++)
{ key=a[j];
i=j-1;
while(i>=0 && a[i]>key)
{a[i+1]=a[i];
i--;}
a[i+1]=key; }
}
void quick_sort(char a[36000][17],int s, int d)
{
int q;
if(s<d)
{q=partitie(a,s,d);
quick_sort(a,s,q);
quick_sort(a,q+1,d);}
}
int main()
{ srand( time(NULL) );
int n,i; char p[17]; char fin[36000][17]; int k=0;
f>>n;
for(i=1;i<=n;i++)
{f>>p;
insert(p,0,(strlen(p)-1));
strcpy(fin[++k],p);}
quick_sort(fin,1,n);
k=0;
for(i=1;i<=n;i=i+1)
if(strcmp(fin[i],fin[i+1])!=0 && strcmp(fin[i],fin[i-1])!=0)
//o<<fin[i]<<" ";
++k;
o<<k;
return 0;
}