Pagini recente » Rezultatele filtrării | Rezultatele filtrării | Rezultatele filtrării | Cod sursa (job #2612551) | Cod sursa (job #2454756)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("secv5.in");
ofstream fout("secv5.out");
const unsigned int DIM = (1 << 20) + 7;
unordered_map <unsigned int, unsigned int> H;
unsigned int v[DIM];
unsigned int n;
unsigned int get(unsigned int p)
{
H.clear();
unsigned int l = 1;
H[v[1]] = 1;
unsigned int nr = 1;
unsigned int ans = 1;
for(unsigned int i = 2; i <= n; i++)
{
if(H[v[i]] == 0)
{
nr++;
}
H[v[i]]++;
while(l <= i && nr > p)
{
if(H[v[l]] == 1)
{
nr--;
}
H[v[l]]--;
l++;
}
unsigned int len = i - l + 1;
ans += len;
}
return ans;
}
main()
{
unsigned int l, r;
fin >> n >> l >> r;
for(unsigned int i = 1; i <= n; i++)
fin >> v[i];
unsigned int res = get(r);
if(l != 1)
res -= get(l - 1);
fout << res;
}