Cod sursa(job #216400)

Utilizator SheepBOYFelix Liviu SheepBOY Data 24 octombrie 2008 13:59:16
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 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++;   
	int count=0,k=0;
    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]-k>=l&&app[i]-k<=u)   
        {   
            if(!last && app[i]-k==(l-1)+app[ilast]-k)   
            {   
				last==1+((i+1-k)-(app[i]-k));   
                sum=sum+last;
				ilast=i;
				count=l;				
            }
			else
			if(count<=u)
			{
			
				sum+=last;
				if(count==u)
				{
					k=last;
					last=0;	
				}
				count++;
			}				
			
        }   
    }   
printf("%d",sum);  
return 0;	
}