Cod sursa(job #3226165)

Utilizator bogdan1479Luca Bogdan Alexandru bogdan1479 Data 20 aprilie 2024 13:13:03
Problema Secventa 5 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <bits/stdc++.h>
#define QED fin.close(); fout.close(); return 0;
using namespace std;
ifstream fin("secv5.in");
ofstream fout("secv5.out");
#define cin fin
#define cout fout
const int NMAX = 1 << 21;

long long a[NMAX + 1], n;

long long solutie(int k) ///nr de subsecv cu maximum k elem distincte
{
    unordered_map<int, int> m;
    long long l = 1, con = 0, sol = 0;
    for(int r = 1; r <= n; r++)
    {
        m[a[r]]++;
        while(m.size() > k)
        {
            if(--m[a[l]] == 0) m.erase(a[l]);
            l++;
        }
        sol += r - l + 1;
    }
    return sol;
}

int main()
{
    int l, u;
    cin >> n >> l >> u;
    for(int i = 1; i <= n; i++)
        cin >> a[i];
    cout << (long long)solutie(u) - solutie(l - 1);
    QED
}