Pagini recente » Borderou de evaluare (job #2198248) | Cod sursa (job #2762409) | Borderou de evaluare (job #1645172) | Borderou de evaluare (job #2959969) | Cod sursa (job #3171095)
#include <fstream>
#include <unordered_map>
using namespace std;
long long v[1000001];
int main() {
ifstream cin ( "secv5.in" );
ofstream cout ( "secv5.out" );
int x , y , i , n;
cin >> n >> x >> y;
for ( i = 1 ; i <= n ; i++ )
cin >> v[i];
auto count = [&](int max) {
int64_t ans = 0;
unordered_map<int, int> frq;
int l = 1, cnt = 0;
for (int r = 1; r <= n; r++) {
if (++frq[v[r]] == 1)
while (++cnt > max) {
if (--frq[v[l]] == 0)
cnt--;
l++;
}
ans += r - l + 1;
}
return ans;
};
(cout << ( count(y) - count(x - 1) ) ) << '\n';
return 0;
}