Cod sursa(job #515162)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 20 decembrie 2010 16:31:13
Problema Restante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <algorithm>
using namespace std;
#define DIM 36001

ifstream fi ("restante.in");
ofstream fo ("restante.out");

int N, Nr;
char sir[17];
int I[DIM], O[DIM], L[DIM][27];

int cnd (int i1, int i2)
{
	for (int i = 0; i < 27; ++i)
		if (L[i1][i] > L[i2][i])
			return 0;
		else if (L[i1][i] < L[i2][i])
			return 1;
	return 0;
}

int identice (int i1, int i2)
{
	for (int i = 0; i < 27; ++i)
		if (L[i1][i] != L[i2][i])
			return 0;
	return 1;	
}

int main ()
{
	int i, j;
	
	fi >> N;
	for (i = 0; i < N; ++i)
	{
		fi >> sir;
		for (j = 0; sir[j]; ++j)
			L[i][sir[j] - 96] ++,
		O[i] = 0;
		I[i] = i;
		L[i][0] = j + 1;
	}
	
	sort (I, I + N, cnd);
	
	for (i = 1; i < N; ++i)
		if ( identice (I[i - 1], I[i]))
			O[I[i - 1]] = O[I[i]] = 1;
	for (i = 0; i < N; ++i)
		if ( !O[i] )
			Nr ++;
	
	fo << Nr;
	
	return 0;
}