Cod sursa(job #128691)

Utilizator thebest001Neagu Rares Florian thebest001 Data 27 ianuarie 2008 17:57:08
Problema Restante Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <stdio.h>
#include <string.h>

char cs[/*36000*/301][17];
int G,daaa=0;
int partitie(int st,int dr)
{
	char m,i,j,p; char aux;
	m=(dr+st)/2;
	p=cs[G][m];
	i=st-1;
	j=dr+1;
	while (1)
	{
		do {++i;} while (cs[G][i]<p);
		do {--j;} while (cs[G][j]>p);
		if (i<j)
		{
			aux=cs[G][i];
			cs[G][i]=cs[G][j];
			cs[G][j]=aux;
		}
		else return j;
	}
}

void qsort(int st,int dr)
{
	int p;
	if (st<dr)
	{
		p=partitie(st,dr);
		qsort(st,p);
		qsort(p+1,dr);
	}
}

int n;
int main()
{
	freopen("restante.in","r",stdin);
	freopen("restante.out","w",stdout);
	scanf("%d\n",&n);
	int i;
	for (i=1;i<=n;i++)
	{
		gets(cs[i]);
	}
	for (G=1;G<=n;G++)
	{
		qsort(0,strlen(cs[G]));
		cs[G][0]=' ';
		cs[G][strlen(cs[G])+1]='\0';
	}
	int j,adevar=0;
	for (i=1;i<=n;i++)
	{
		adevar=0;
		for (j=1;j<=n;j++)
		{
			if (strcmp(cs[i],cs[j])==0 && i!=j)
			{
				adevar=1;
				break;
			}
		}
		if (!adevar) daaa++;
	}
	printf("%d",daaa);
	return 0;
}