Pagini recente » Cod sursa (job #1414217) | Cod sursa (job #2530072) | Cod sursa (job #1673419) | Cod sursa (job #85516) | Cod sursa (job #1159520)
#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
#include <map>
struct Key {
int c['z' - 'a' + 1];
Key() {
memset(c, 0x00, sizeof(int) * ('z' - 'a' + 1));
}
};
std::map<Key, int> counts;
bool operator< (const Key& left, const Key& right) {
for (int i = 0; i < 'z' - 'a' + 1; ++i) {
if (left.c[i] < right.c[i]) {
return true;
} else if (left.c[i] > right.c[i]) {
return false;
}
}
return false;
}
int main() {
std::ifstream in("restante.in");
int n;
in >> n;
std::string s;
for (int i = 0; i < n; ++i) {
in >> s;
Key k;
for (int i = 0; i < s.length(); ++i) {
k.c[s[i] - 'a']++;
}
counts[k]++;
}
in.close();
int sol = 0;
for (std::map<Key, int>::const_iterator it = counts.begin();
it != counts.end();
++it) {
if (it->second == 1) {
sol++;
}
}
std::ofstream out("restante.out");
out << sol << std::endl;
out.close();
return 0;
}