Pagini recente » Cod sursa (job #1286847) | Cod sursa (job #3036976) | Cod sursa (job #3328424) | Monitorul de evaluare | Cod sursa (job #3353887)
/*
* author: qvalentin
* https://codeforces.com/profile/qvalentin
*
* It's you, it'll always be you *
*/
#include <bits/stdc++.h>
using namespace std;
#define ull unsigned long long
#define ll long long
#define pb push_back
#define fastio ios_base::sync_with_stdio(0); cin.tie(nullptr); cout.tie(nullptr);
const int MOD = 1e9+7;
int di[4]={0,0,-1,1};
int dj[4]={-1,1,0,0};
string FILENAME="secv5";
ifstream f(FILENAME+".in");
ofstream g(FILENAME+".out");
int n,l,u;
int frq[1337337];
//cate subsecv au k elemente diff
ll cnt(vector<int>& v, int k){
for(int i=1;i<=n;++i)frq[i] = 0;
ll ans = 0;
int st = 1;
int dist = 0;
//two poiinters
for(int dr = 1; dr <= n; ++dr){
if(frq[v[dr]] == 0)dist++;
frq[v[dr]]++;
while(dist > k) {
frq[v[st]]--;
if(frq[v[st]] == 0) dist--;
st++;
}
ans += (ll)(dr-st+1); //adaug toate subscv
}
return ans;
}
signed main(){
fastio
#ifndef qv
#define cin f
#define cout g
#endif
cin>>n>>l>>u;
vector<pair<ll,int> > v(n+1);
for(int i=1;i<=n;++i){
int x;
cin>>x;
v[i] = {x,i};
}
sort(v.begin(),v.end());
vector<int> idxs(n+1);
int tmp = 1;
for(int i=1;i<=n;++i){
if(i>1 && v[i].first != v[i-1].first) {
tmp++;
}
idxs[v[i].second]=tmp;
}
cout<<cnt(idxs,u)-cnt(idxs,l-1);
return 0;
}