Cod sursa(job #124874)

Utilizator tvladTataranu Vlad tvlad Data 20 ianuarie 2008 09:39:18
Problema Restante Scor 0
Compilator cpp Status done
Runda preONI 2008, Runda 3, Clasele 5-8 Marime 0.87 kb
#include <cstdio>
#include <set>
using namespace std;

class cuvant {
public:
	int v[26];
	bool orig;
	cuvant() {
		for (int i = 0; i < 26; ++i)
			v[i] = 0;
		orig = true;
	};
	void assign ( char a[] ) {
		for (int i = 0; a[i] != '\0'; ++i)
			++v[a[i]-'a'];
	};
};
bool operator< ( const cuvant &a, const cuvant &b ) {
	for (int i = 0; i < 26; ++i)
		if (a.v[i] != b.v[i])
			return a.v[i] < b.v[i];
	return false;
}

int main() {
	freopen("restante.in","rt",stdin);
	freopen("restante.out","wt",stdout);
	int n = 0;
	scanf("%d\n",&n);
	set<cuvant> s; int r = 0; char cuv[20];
	for (int i = 0; i < n; ++i) {
		scanf("%s\n",cuv);
		cuvant a; a.assign(cuv);
		if (s.find(a) == s.end()) {
			s.insert(a);
			++r;
		} else {
			if ((*(s.find(a))).orig) {
				(*(s.find(a))).orig = false;
				--r;
			}
		}
	}
	printf("%d\n",r);
	return 0;
}