Pagini recente » Cod sursa (job #475993) | Cod sursa (job #2281093) | Cod sursa (job #2545060) | Cod sursa (job #429820) | Cod sursa (job #2755669)
#include <fstream>
#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;
#define MAX_N 1 << 20
vector<unsigned int> values;
long long sequences(int limit){
long long result = 0;
vector<int> ap(MAX_N, 0);
int left = 0, distincts = 0;
for(int i = 0; i < values.size(); ++i){
if(++ap[values[i]] == 1)
++distincts;
while(distincts > limit){
if(--ap[values[left]] == 0)
--distincts;
++left;
}
result += (i - left + 1);
}
return result;
}
int main()
{
ifstream cin("secv5.in");
ofstream cout("secv5.out");
int N, L, U, distincts = 0;
unsigned int x;
cin >> N >> L >> U;
unordered_map<unsigned int, int> hashtable;
for(int i = 0; i < N; ++i){
cin >> x;
if(hashtable[x] == 0)
hashtable[x] = ++distincts;
values.push_back(distincts);
}
cout << sequences(U) - sequences(L - 1);
cin.close();
cout.close();
return 0;
}