Pagini recente » Cod sursa (job #306103) | Cod sursa (job #2386859) | Cod sursa (job #2089111) | Cod sursa (job #1914378) | Cod sursa (job #2698987)
#include <fstream>
#include <map>
using namespace std;
map<int,int> f;
int v[1100000];
int main()
{
ifstream cin("secv5.in");
ofstream cout("secv5.out");
int n,a,b;
cin>>n>>a>>b;
for(int i=0; i<n; i++)
{
cin>>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;
}
cout<<cnt1-cnt2;
return 0;
}