Pagini recente » Cod sursa (job #120235) | Cod sursa (job #2505829) | Cod sursa (job #1534267) | Cod sursa (job #1795843) | Cod sursa (job #2081257)
/// OrangeWarrior #1
#include<bits/stdc++.h>
using namespace std;
ifstream f("secv5.in");
ofstream g("secv5.out");
int n,a,b;
bool ok=0,ok2=0;
unsigned int v[(1<<20)+3];
long long sol;
map<unsigned int,int>st;
int nrda, nrdb;
map<unsigned int,int>dr;
int main()
{
f>>n>>a>>b;
for(int i=1;i<=n;++i)
f>>v[i];
int c1=1;
int c2=1;
for(int i=1;i<=n;++i)
{
if(i>1){
if(st[v[i-1]]==1)
--nrda;
if(dr[v[i-1]]==1)
--nrdb;
st[v[i-1]]--,dr[v[i-1]]--;
}
while(nrda<a && c1<=n && !ok2)
{
if(st[v[c1]]==0)
++nrda;
st[v[c1]]++;
++c1;
if(c1>n){
c1=n;ok2=1;break;}
}
while(nrdb<=b && c2<=n && !ok)
{
if(nrdb==b && dr[v[c2]]==0)
break;
else
{
if(dr[v[c2]]==0)
++nrdb;
dr[v[c2]]++;
++c2;
if(c2>n){
ok=1;c2=n;break;
}
}
}
//g<<nrda<<" "<<nrdb<<" "<<c1<<" "<<c2<<'\n';
if(nrda==a)
sol+=c2-c1+2;
}
g<<sol;
return 0;
}