Cod sursa(job #206832)

Utilizator IrnukIrina Grosu Irnuk Data 9 septembrie 2008 22:57:26
Problema Restante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.36 kb
/*restante*/

#include<fstream.h>
#include<string.h>

long n,contor;

char s[36005][20],s1[20],cit[2];
ifstream fin("restante.in");
ofstream fout("restante.out");

void pivotare(long i,long j,long &m)
{

	char pivot=s1[i];

	while(i<j)
	{
		while(j>i && s1[j]>=pivot) j--;
		s1[i]=s1[j];
		while(i<j && s1[i]<=pivot) i++; 
		s1[j]=s1[i];
	}
	s1[i]=pivot;
	m=i;
}

void quick_sort(long p,long q)
{
	long m;

	if(p<q)
	{
		pivotare(p,q,m); 

		quick_sort(p,m-1);
	
		quick_sort(m+1,q);
	}

}
void pivotare1(long i,long j,long &m)
{

	char pivot[20];
	strcpy(pivot,s[i]);

	while(i<j)
	{
		while(j>i && strcmp(s[j],pivot)>0) j--;
		strcpy(s[i],s[j]);
		while(i<j && strcmp(s[i],pivot)<0) i++; 
		strcpy(s[j],s[i]);
	}
	strcpy(s[i],pivot);
	m=i;
}

void quick_sort1(long p,long q)
{
	long m;

	if(p<q)
	{
		pivotare(p,q,m); 

		quick_sort(p,m-1);
	
		quick_sort(m+1,q);
	}

}

int main()
{
	long i;
	fin>>n;
	fin.getline(cit,2);
	for(i=0;i<n;i++)
		fin.getline(s[i],20);

	for(i=0;i<n;i++)
	{
		strcpy(s1,s[i]);
		quick_sort(0,strlen(s[i])-1);
		strcpy(s[i],s1);
	}

	quick_sort1(0,n-1);

	for(i=0;i<n-1;i++)
	{
		if(strcmp(s[i],s[i+1])!=0&& strcmp(s[i],s[i-1])!=0)
			contor++;
		//fout<<s[i]<<'\n';
	}
	if(strcmp(s[n-1],s[n-2])!=0)
		contor++;
	fout<<contor<<'\n';
	fout.close();
	return 0;
}