Cod sursa(job #167733)

Utilizator pandaemonAndrei Popescu pandaemon Data 29 martie 2008 23:24:36
Problema Restante Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define NMAX 36000

long n,i,ordine[NMAX+1],j,contor;

char mat[NMAX+1][18];


int compare1(const void *a, const void *b)
{ return int( *(char*)a - *(char*)b ); }


int compare2(const void *a, const void *b)
{
  long t1 = *(long*)a, t2 = *(long*)b;

  return strcmp( mat[ t1 ], mat[ t2 ] );
}


main()

{  freopen("restante.in","r",stdin);
   freopen("restante.out","w",stdout);

   scanf("%ld",&n); gets(mat[0]);


   for(i=1; i<=n; i++)
     {
       gets(mat[i]);  ordine[i]=i;

       qsort(mat[i], strlen(mat[i]),
	     sizeof(char), compare1);
     }


   qsort(ordine, n, sizeof(long), compare2);

#define cmp strcmp( mat[ordine[j]] , mat[ordine[j+1]] )

   for(i=1; i<=n; i++)
   { j=i;

     while(cmp==0) j++;

     if(j==i) contor++;

     i=j;

   }

#undef cmp

   printf("%ld\n",contor); return 0; }