Cod sursa(job #124292)

Utilizator filipbFilip Cristian Buruiana filipb Data 18 ianuarie 2008 19:55:14
Problema Restante Scor Ascuns
Compilator cpp Status done
Runda Marime 0.96 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define NMax 36005
typedef char cuvant[16];

int N, cnt;
cuvant C[NMax];

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

int cmp_word(const void *a, const void *b)
{
	char *A = (char *)a, *B = (char *)b;
	int i, l1 = strlen(A), l2 = strlen(B);

	for (i = 0; i < l1 && i < l2; i++)
		if (*A+i != *B+i)
			return (*A+i) - (*B+i);
	return l1-l2;
}

int main(void)
{
	int i;

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

	scanf("%d", &N);
	for (i = 0; i < N; i++)
		scanf("%s", C[i]);

	for (i = 0; i < N; i++)
		qsort(C[i], strlen(C[i]), sizeof(char), cmp);

	qsort(C, N, sizeof(cuvant), cmp_word);

	for (i = 0; i < N; i++)
	{
		if (i && cmp_word((void *)C[i], (void *)C[i-1]) == 0) continue;
		if (i < N-1 && cmp_word((void *)C[i], (void *)C[i+1]) == 0) continue;
		cnt++;

	}

	printf("%d\n", cnt);

	return 0;
}