Pagini recente » Cod sursa (job #2852871) | Cod sursa (job #2759912) | Cod sursa (job #1245974) | Cod sursa (job #2628089) | Cod sursa (job #216038)
Cod sursa(job #216038)
#define sz 2<<20
//#include<vector>
//using namespace std;
//vector<bool> s(2<<30,false);
#include<stdio.h>
int n,v,lv,nr,app[sz],stk[sz];
int see(int k)
{
for(int i=0;i<nr;i++)
if(k==stk[i])
return 1;
return 0;
}
int main()
{
int i,l,u,last,ilast,nr;
l=u=0;
freopen("secv5.in","r",stdin);
freopen("secv5.out","w",stdout);
last=ilast=0;
scanf("%d%d%d%d",&n,&l,&u,&lv);
app[0]=1;
int sum=0;
nr=0;
stk[nr]=lv;
nr++;
for(i=1;i<n;i++)
{
scanf("%d",&v);
if(v!=lv&&!see(v))
app[i]=app[i-1]+1;
else
app[i]=app[i-1];
stk[nr]=v;
nr++;
lv=v;
if(app[i]>=l&&app[i]<=u)
{
if(!last)
{
last=1+((i+1)-app[i]);
ilast=i;
}
else
if(i-ilast>=l-1&&i-ilast<=u-1)
{
int nt=0,k=ilast;
for(int j=ilast;j<i;j++)
if(app[j]!=app[j+1])
nt++;
if(nt+1>=l && nt+1 <= u)
{
last++;
ilast=i;
}
}
sum+=last;
}
}
printf("%d",sum);
}