Cod sursa(job #216038)

Utilizator SheepBOYFelix Liviu SheepBOY Data 22 octombrie 2008 10:06:21
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 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)
				{   
					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);
}