Cod sursa(job #3330841)

Utilizator RosaSofianRosa Sofian RosaSofian Data 22 decembrie 2025 16:14:25
Problema Secventa 5 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <fstream>
#include <unordered_map>
#define int long long
using namespace std;

ifstream cin("secv5.in");
ofstream cout("secv5.out");

const int dim= 1048585;
int v[dim];
unordered_map <int, int> f;
int n;

int solve(int x){
    int cate= 0;
    int st= 1, dr= 1;
    int frecv= 1;
    f[v[1]]++;

    while(st <= n){
        if(dr < n){
            if(frecv <= x){
                cate+= dr- st+ 1;
                //cout <<"+ "<< st<<" "<< dr<< endl;
                dr++;
                f[v[dr]]++;
                if(f[v[dr]]== 1)
                    frecv++;
            }
            else{
                f[v[st]]--;
                if(f[v[st]]== 0)
                    frecv--;
                st++;
            }
        }
        else{
            if(frecv <= x){
                cate+= dr- st+ 1;
                //cout <<"+ "<< st<<" "<< dr<< endl;
                break;
            }
            f[v[st]]--;
            if(f[v[st]]== 0)
                frecv--;
            st++;
        }
    }
    return cate;
}

signed main()
{
    int i, j, a, b;
    cin >> n>> a>> b;

    for(i= 1;i <= n;i++){
        cin >> v[i];
    }

    int nr1= solve(b);
    f.clear();
    int nr2= solve(a- 1);

    //cout << nr1<<" "<< nr2<< endl;
    cout << nr1- nr2;

    return 0;
}