Pagini recente » Cod sursa (job #1835054) | Cod sursa (job #2208163) | Cod sursa (job #2655556) | Cod sursa (job #2112370) | Cod sursa (job #3331481)
#include <fstream>
using namespace std;
struct Frecv {
int f[26];
int cnt;
};
int main() {
ifstream fin("restante.in");
ofstream fout("restante.out");
int N;
fin >> N;
char cuv[36005][20];
for (int i = 0; i < N; i++)
fin >> cuv[i];
Frecv v[36005];
int M = 0; // numărul de forme diferite
for (int i = 0; i < N; i++) {
int fr[26] = {0};
// calculăm frecvența literelor
for (int j = 0; cuv[i][j]; j++)
fr[cuv[i][j] - 'a']++;
// căutăm dacă această frecvență există deja
int gasit = 0;
for (int k = 0; k < M; k++) {
int ok = 1;
for (int l = 0; l < 26; l++)
if (v[k].f[l] != fr[l]) {
ok = 0;
break;
}
if (ok) {
v[k].cnt++;
gasit = 1;
break;
}
}
// dacă nu există, o adăugăm
if (!gasit) {
for (int l = 0; l < 26; l++)
v[M].f[l] = fr[l];
v[M].cnt = 1;
M++;
}
}
// numărăm cuvintele originale
int originale = 0;
for (int i = 0; i < M; i++)
if (v[i].cnt == 1)
originale++;
fout << originale;
}