Cod sursa(job #213477)

Utilizator cosserBula Ionut cosser Data 9 octombrie 2008 22:18:14
Problema Restante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <iostream.h>
#include <stdlib.h>
#include <fstream.h>

#include<string.h>

using namespace std;

ifstream f ("restante.in");
ofstream o ("restante.out");

 int partitie(char a[36000][17],int s, int d)
{
char piv[17],aux[17]; int i,j;

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()
{
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;
}