Cod sursa(job #3331481)

Utilizator kkcalinMarin Calin kkcalin Data 28 decembrie 2025 16:35:26
Problema Restante Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.35 kb
#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;
}