Cod sursa(job #2877026)

Utilizator trifangrobertRobert Trifan trifangrobert Data 24 martie 2022 08:36:11
Problema Secventa 5 Scor 90
Compilator cpp-32 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#include <unordered_map>

using namespace std;

const int NMAX = (1 << 20);
int N, L, U;
unsigned int v[NMAX];

long long Solve(const int &K) {
    unordered_map <unsigned int, int> freq;
    long long cnt = 0;
    for (int i = 0, j = 0; i < N; ++i) {
        freq[v[i]] += 1;
        while (freq.size() > K) {
            freq[v[j]]--;
            if (freq[v[j]] == 0) {
                freq.erase(v[j]);
            }
            ++j;
        }
        cnt = 1LL * cnt + (i - j + 1);
    }
    return cnt;
}

int main() {
    ifstream fin("secv5.in");
    ofstream fout("secv5.out");
    fin >> N >> L >> U;
    for (int i = 0; i < N; ++i) {
        fin >> v[i];
    }
    fout << Solve(U) - Solve(L - 1) << "\n";
    fin.close();
    fout.close();
    return 0;
}