Pagini recente » Monitorul de evaluare | Istoria paginii jc2021/solutii/capcana | Profil Marghescu | Profil M@2Te4i | Cod sursa (job #1990285)
#include <bits/stdc++.h>
using namespace std;
const int N = 1234567;
int i, n, l, u, nr, freq[N];
long long a[N];
map<long long, int> M;
set<long long> S;
long long solve(int nr) {
long long ans = 0;
int cnt = 0, i, j = 1;
for(i = 1; i <= n; ++i) {
++freq[a[i]];
if(freq[a[i]] == 1) ++cnt;
while(cnt > nr) {
--freq[a[j]]; ++j;
if(!freq[a[j - 1]]) --cnt;
}
ans += i - j + 1;
}
while(j <= n) --freq[a[j]], ++j;
return ans;
}
int main() {
ifstream cin("secv5.in");
ofstream cout("secv5.out");
ios_base::sync_with_stdio(0);
cin >> n >> l >> u;
for(i = 1; i <= n; ++i) cin >> a[i], S.insert(a[i]);
for(auto it : S) M[it] = ++nr;
for(i = 1; i <= n; ++i) a[i] = M[a[i]];
cout << solve(u) - solve(l - 1) << '\n';
return 0;
}