Cod sursa(job #2877023)

Utilizator trifangrobertRobert Trifan trifangrobert Data 24 martie 2022 08:33:21
Problema Secventa 5 Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#include <vector>
#include <unordered_map>

using namespace std;

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

long long Solve(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 (j < i && freq.size() > K) {
            freq[v[j]]--;
            if (freq[v[j]] == 0) {
                freq.erase(v[j]);
            }
            ++j;
        }
        cnt += (i - j);
    }
    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;
}