Cod sursa(job #240873)

Utilizator cotofanaCotofana Cristian cotofana Data 8 ianuarie 2009 20:43:05
Problema Restante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.42 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define dim 36005

int n;
char cuv[dim][20];

void quicksort(char *a, int lo, int hi)
{
    int i=lo, j=hi, h;
    char x=a[(lo+hi)/2];

    do
    {    
        while (a[i]<x) i++; 
        while (a[j]>x) j--;
        if (i<=j)
        {
            h=a[i]; a[i]=a[j]; a[j]=h;
            i++; j--;
        }
    } while (i<=j);

    if (lo<j) quicksort(a, lo, j);
    if (i<hi) quicksort(a, i, hi);
}

void quicksort2(char a[dim][20], int lo, int hi)
{
    int i=lo, j=hi;
    char x[20], h[20];
    strcpy(x, a[(lo+hi)/2]);

    do
    {
	while (strcmp(a[i], x)<0) i++;
	while (strcmp(a[j], x)>0) j--;
	if (i<=j)
	{
	    strcpy(h, a[i]);
	    strcpy(a[i], a[j]);
	    strcpy(a[j], h);
	    i++; j--;
	}
    } while (i<=j);

    if (lo<j) quicksort2(a, lo, j);
    if (i<hi) quicksort2(a, i, hi);
}


int main()
{
	int i, ct=0;
	freopen("restante.in", "r", stdin);
	freopen("restante.out", "w", stdout);
	scanf("%d\n", &n);
	for (i=1; i<=n; i++)
	{
		scanf("%s\n", cuv[i]);
		quicksort(cuv[i], 0, strlen(cuv[i])-1);
	}
	quicksort2(cuv, 1, n);
	for (i=1; i<=n; i++)
	{
		if (i==1)
		{
			if (strcmp(cuv[1], cuv[2])!=0) ct++;
		}
		else if (i==n)
		{
			if (strcmp(cuv[n], cuv[n-1])!=0) ct++;
		}
		else if (strcmp(cuv[i], cuv[i-1])!=0 && strcmp(cuv[i], cuv[i+1])!=0)
			ct++;
	}
	printf("%d\n", ct);
	return 0;
}