Pagini recente » Cod sursa (job #3242763) | Cod sursa (job #2723443) | Cod sursa (job #3033096) | Cod sursa (job #3264142) | Cod sursa (job #2698986)
#include <iostream>
#include <fstream>
#include <map>
using namespace std;
map<int,int> f;
int v[1100000];
int main()
{
ifstream in("secv5.in");
ofstream out("secv5.out");
int n,a,b;
in>>n>>a>>b;
for(int i=0; i<n; i++)
{
in>>v[i];
}
int cnt1=0,j=0,dist=1,cnt2=0;
f[v[0]]=1;
for(int i=0; i<n; i++)
{
if(i>0)
{
f[v[i-1]]--;
if(f[v[i-1]]==0) dist--;
}
while(j<n && dist<=b)
{
j++;
f[v[j]]++;
if(f[v[j]]==1) dist++;
}
cnt1+=(j-1)-i+1;
}
j=0;
dist=1;
f.clear();
f[v[0]]=1;
for(int i=0; i<n; i++)
{
if(i>0)
{
f[v[i-1]]--;
if(f[v[i-1]]==0) dist--;
}
while(j<n && dist<=a-1)
{
j++;
f[v[j]]++;
if(f[v[j]]==1) dist++;
}
cnt2+=(j-1)-i+1;
}
out<<cnt1-cnt2;
return 0;
}