Cod sursa(job #303251)

Utilizator lucaz0rLuca Liviu lucaz0r Data 9 aprilie 2009 17:59:00
Problema Restante Scor 50
Compilator c Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define a(i,j) a[(i)*18+(j)]
//#define a(i,j) a[i][j]

int sort_function( const void *a, const void *b)
{
	int dif;
	dif =*((char*)a) - *((char*)b);
if (dif < 0)
	return -1;
if (dif > 0)
	return 1;
return 0;

}

int sort_function2 (const void*a, const void *b)
{
	return (strcmp(*((char**)a),*((char**)b)));
}

int main() {

	long n, i, j, len, nr;
	char s[18];
	char c;
	char **a;
	FILE *f;

	f = fopen ("restante.in", "r");
	freopen ("restante.out", "w", stdout);

	fscanf (f,"%ld\n",&n);

	a =  malloc ((n+2) * sizeof (char*));

	i = 1;   j = 1;

	for (i = 1; i <= n; i++){
			fscanf (f,"%s\n",s);
			a[i] = malloc ( (strlen(s)+1) * sizeof(char));
			strcpy(a[i]+1,s);

			 a[i][0] = 'O';
			}
	//for (i = 1; i <= n; i++)
	//	printf ("%s\n",a[i]);

	for (i = 1; i <= n; i++)
	 qsort((void*)a[i], strlen(a[i]), sizeof(char), sort_function);

	//for (i = 1; i <= n; i++)
	  //	printf ("%s\n",a[i]);

	//printf ("\n");
	 qsort((void *)(a+1), n, sizeof(char*), sort_function2);

 //	for (i = 1; i <= n; i++)
   //		printf ("%s\n",a[i]);

	nr = 0;

	a[n+1] = "dcba";

	for (i = 1; i <= n; i++)
		for (j = i+1; j <= n+1; j++)
			if (strcmp (a[i], a[j]) != 0)
				{
				  if (j-i == 1) nr++;
				  i = j;
				}







	printf ("%ld",nr);




	fclose(f);


	return 0;
}