Pagini recente » Cod sursa (job #1166425) | Cod sursa (job #2508629) | Cod sursa (job #668202) | Cod sursa (job #3032436) | Cod sursa (job #3227292)
#include <fstream>
#include <queue>
#include <map>
#include <unordered_map>
#define int long long
using namespace std;
ifstream cin("secv5.in");
ofstream cout("secv5.out");
const int NMAX = 2e6;
int v[NMAX], n, l, r;
int secvmax(int cate)
{
unordered_map<int,int> m;
deque<int> dq;
int distincte = 0, ans = 0;
for(int i = 1; i <= n; i++)
{
dq.push_back(i);
if(m[v[i]] == 0)
distincte++;
m[v[i]]++;
while(distincte > cate)
{
m[v[dq.front()]]--;
if(m[v[dq.front()]] == 0)
distincte--;
dq.pop_front();
}
ans = ans + i - (dq.empty() ? i + 1 : dq.front()) + 1;
}
return ans;
}
signed main()
{
cin >> n >> l >> r;
for(int i = 1; i <= n; i++)
{
cin >> v[i];
}
cout << secvmax(r) - secvmax(l - 1);
}