Cod sursa(job #2849101)

Utilizator mateitudordmDumitru Matei mateitudordm Data 14 februarie 2022 15:52:21
Problema Secventa 5 Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <bits/stdc++.h>
#define nmax 1005000
#define int long long
#pragma GCC optimize("Ofast")

using namespace std;

int v[nmax + 1], c[nmax + 1], cpart[nmax + 1], n;
unordered_map<int, int> f;
int rez(int x)
{
    if (x == 0)
        return 0;
    int i, cnt = 0, dr = 0;
    f.clear();
    for (i = 1; i <= n; i++)
    {
        while (dr < n && f.size() < x)
            f[v[++dr]]++;
        while (f[v[dr + 1]] != 0)
            f[v[++dr]]++;
        if (f[v[dr + 1]] == 0)
            f.erase(v[dr + 1]);
        cnt += dr - i + 1;
        f[v[i]]--;
        if (f[v[i]] == 0)
            f.erase(v[i]);
    }
    return cnt;
}

signed main()
{
    ifstream cin("secv5.in");
    ofstream cout("secv5.out");
    int l, u, p = 0, a, i, st, dr, cnt = 0;
    ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cin >> n >> l >> u;
    for (i = 1; i <= n; i++)
        cin >> v[i];
    cout << rez(u) - rez(l - 1);
    return 0;
}