Cod sursa(job #210539)

Utilizator IrnukIrina Grosu Irnuk Data 27 septembrie 2008 23:04:04
Problema Restante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
/*restante*/

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

long n,contor;

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

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

	char pivot=s[k][i];

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

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

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

		quick_sort(k,p,m-1);

		quick_sort(k,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)
	{
		pivotare1(p,q,m);

		quick_sort1(p,m-1);

		quick_sort1(m+1,q);
	}

}


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

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

	quick_sort1(0,n-1);

	for(i=0;i<n;i++)
	{
		ok=0;
		while(strcmp(s[i],s[i+1])==0)
		{
			i++;
			ok=1;
		}
		if(ok==0)
			contor++;
	}



	fout<<contor<<'\n';
	fout.close();
	return 0;
}