Cod sursa(job #216011)

Utilizator SheepBOYFelix Liviu SheepBOY Data 22 octombrie 2008 08:27:30
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#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)
				{
					if(i-ilast<2)
					{	if(stk[ilast]!=stk[i])
							
					last++;
					ilast=i;
					}
				    else
					{
						last++;
					ilast=i;
					}
				}
		sum+=last;
		}
	}
	printf("%d",sum);
}