Cod sursa(job #754698)

Utilizator FlameingoAiordachioaei Marius Flameingo Data 2 iunie 2012 22:10:34
Problema Restante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<cstdio>
#include<cstring>
using namespace std;
char s[16],a[36001][16];
void sortare(int l,int r)
{
	if(l==r)return;
	int m=(l+r)>>1,i=l,j=m+1,k=l;
	sortare(l,m);
	sortare(m+1,r);
	while(i<=m||j<=r)
		if(i<=m&&(s[i]<s[j]||j>r))
			a[0][k++]=s[i++];
		else
			a[0][k++]=s[j++];
	for(;l<=r;l++)
		s[l]=a[0][l];
}
int main()
{
	freopen("restante.in","r",stdin);freopen("restante.out","w",stdout);
	int n,i,index=0;bool t;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		scanf("%s",s),s[strlen(s)]=s[0],sortare(1,strlen(s)-1),strcpy(a[i],s+1);
	do
	{
		t=1;
		for(i=2;i<=n;i++)
			if(strcmp(a[i],a[i-1])<0)
				strcpy(s,a[i]),strcpy(a[i],a[i-1]),strcpy(a[i-1],s),t=0;
	}
	while(!t);
	for(i=1;i<=n;i++)
		if(strcmp(a[i],a[i-1])&&strcmp(a[i],a[i+1]))
			index++;
	printf("%d",index);
}