Cod sursa(job #2953438)

Utilizator NutaAlexandruASN49K NutaAlexandru Data 11 decembrie 2022 13:26:48
Problema Secventa 5 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
#import <algorithm>
#import <vector>
#import <map>
#import <set>
#import <deque>
#import <queue>
#import <cassert>
//#import <cmath>
#import <cstring>
#import <cctype>
#import <cstdlib>
#import <stack>
using namespace std;
#define all(a) a.begin(),a.end()
#define int long long
vector<int>normal(vector<int>a)
{
    auto v=a;
    sort(all(a));
    a.erase(unique(all(a)),a.end());
    for(auto &c:v)
    {
        c=lower_bound(a.begin(),a.end(),c)-a.begin();
    }
    return v;
}
int val(vector<int>a,int x)
{
    int l=0,n=(int)a.size();
    vector<int>val(n+1,0);int cnt=0;
    int rez=0;
    for(int r=0;r<n;r++)
    {
        val[a[r]]++;
        if(val[a[r]]==1)cnt++;
        while(cnt>x)
        {
            val[a[l]]--;
            if(!val[a[l]])cnt--;
            l++;
        }
        rez+=r-l+1;
    }
    return rez;
}
main()
{
    ifstream cin("secv5.in");
    ofstream cout("secv5.out");
    int n,l,r;
    cin>>n>>l>>r;
    vector<int>a(n);
    for(auto &c:a)cin>>c;
    a=normal(a);
    cout<<val(a,r)-val(a,l-1);
}