Cod sursa(job #206837)

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

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

long n,contor;

char s[36005][20],s1[20],cit[2],tot[720000];
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);
	}

}


int main()
{
	long i;
	char *p;
	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);
		strcat(tot,s1);
		tot[strlen(tot)]='0';
	}
	tot[strlen(tot)]=0;

	for(i=0;i<n;i++)
	{
		p=strstr(tot,s[i]);
		if(strstr(p+1,s[i])==0)
			contor++;
	}
	fout<<contor<<'\n';
	fout.close();
	return 0;
}