Pagini recente » Cod sursa (job #1729028) | Cod sursa (job #2084327) | Cod sursa (job #2776268) | Cod sursa (job #2866384) | Cod sursa (job #125757)
Cod sursa(job #125757)
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 36000;
class cuvant {
public:
int v[26];
cuvant() {
for (int i = 0; i < 26; ++i) v[i] = 0;
};
cuvant ( char a[] ) {
for (int i = 0; i < 26; ++i) v[i] = 0;
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;
}
bool operator== ( const cuvant &a, const cuvant &b ) {
for (int i = 0; i < 26; ++i)
if (a.v[i] != b.v[i])
return false;
return true;
}
int n;
bool naspa[N];
int main() {
freopen("restante.in","rt",stdin);
freopen("restante.out","wt",stdout);
scanf("%d\n",&n);
vector<cuvant> v;
char cuv[20];
for (int i = 0; i < n; ++i) {
scanf("%s\n",cuv);
cuvant a(cuv);
v.push_back(a);
}
sort(v.begin(),v.end());
int r = 1;
for (int i = 1; i < v.size(); ++i) {
if (v[i] == v[i-1]) {
if (naspa[i-1]) {
naspa[i] = true;
} else {
naspa[i] = naspa[i-1] = true;
--r;
}
} else {
++r;
}
}
printf("%d\n",r);
return 0;
}