Cod sursa(job #611944)

Utilizator nikopolCristian Condurache nikopol Data 4 septembrie 2011 19:58:16
Problema Restante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include<stdio.h>
#include<fstream>
#include<iostream>
#include<algorithm>
#include<string.h>

using namespace std;

char T[36001][17];
char R[36001][17];

void mergesort(long a,long b) {

	if(a==b) return;
	
	long m = (a+b)/2,i=a,j=m+1,p=a;
	mergesort(a,m);
	mergesort(m+1,b);
	
	while(i<=m && j<=b && p<=b) {
		if(strcmp(T[i],T[j])<=0) {
			strcpy(R[p],T[i]);
			i++;
			p++;
		}
		else {
			strcpy(R[p],T[j]);
			j++;
			p++;
		}
	}
	while(i<=m && p<=b) {
		strcpy(R[p],T[i]);
		i++;
		p++;
	}
	while(j<=b && p<=b) {
		strcpy(R[p],T[j]);
		j++;
		p++;
	}
	for(i=a;i<=b;i++)
		strcpy(T[i],R[i]);
}

int main() {

	long n,i,c=0;

	freopen("restante.in","r",stdin);
	freopen("restante.out","w",stdout);
	
	scanf("%ld",&n);
	for(i=1;i<=n;i++) {
		scanf("%s",T[i]);
		sort(T[i],T[i]+strlen(T[i]));
	}

	mergesort(1,n);
	
	if(n>1 && strcmp(T[1],T[2])!=0)
		c++;
	
	for(i=2;i<n;i++) {
		if(strcmp(T[i-1],T[i])!=0 && strcmp(T[i],T[i+1])!=0)
			c++;
	}
	
	if(strcmp(T[n-1],T[n])!=0)
		c++;

	printf("%ld",c);

	return 0;
}