Cod sursa(job #555854)

Utilizator bog29Antohi Bogdan bog29 Data 15 martie 2011 20:12:41
Problema Secventa 5 Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<fstream>
#include<vector>
#include<algorithm>
#define dmax 1100000
#define mod 514229
using namespace std;
ifstream in("secv5.in");
ofstream out("secv5.out");

unsigned int n,k,l,u, nr, x[dmax],nr2;
unsigned int z[mod], w[dmax], pasu, pasl;
unsigned int sol;


int main()
{	
	int i;

	in>>n>>l>>u;
	
	for(i=1;i<=n;i++)
		in>>x[i];	
	in.close();	
	
	
	pasu = 1;
	pasl = 1;
	z[x[1] % mod]=1;
	w[x[1] % mod]=1;
	nr = 1;
	nr2 = 1;

	if(l==1)
		sol=1;
	
	for(i=2; i<=n; i++)
	{	
		k = x[i] % mod;

		if(!z[k])
			nr++;
		
		z[k]++;
		
		while(nr > u && nr < i)
		{	
			k = x[pasu] % mod;
			
			z[k]--;
			if(!z[k])
				nr--;
			pasu++;
		}
		
		sol += (i - pasu +1);
		
		
		if(!w[k])
			nr2++;
		
		w[k]++;

		while(nr2 > l-1 && pasl < i)
		{	
			k = x[pasl] % mod;
			
			w[k]--;
			if(!w[k])
				nr2--;
			pasl++;
		}
		
		if(l!=1)
			sol -= (i - pasl +1);
	}
	
	out<<sol;
	
	out.close();
	return 0;
}