Cod sursa(job #706025)

Utilizator vlad.doruIon Vlad-Doru vlad.doru Data 5 martie 2012 13:49:03
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <vector>
#include <fstream>

using namespace std;

ifstream in("secv5.in");
ofstream out("secv5.out");

const int P=666013;

vector <unsigned int> H[P];
vector <int> a;

int n,l,u;

bool cauta(unsigned int x){
	unsigned aux=x%P;
	for(int i=0;i<H[aux].size();++i)
		if(H[aux][i]==x)
			return true;
	return false;
}

int main(){
	long long rez=0;
	int nr,i,nrap;
	int *sp;
	unsigned x;
	in>>n>>l>>u;
	for(i=1;i<=n;++i){
		in>>x;
		if(cauta(x)==1){
			nrap++;
			continue;
		}
		else{
			H[x%P].push_back(x);
			a.push_back(nrap);
			nrap=1;
		}
	}
	if(nrap>1)
		a.push_back(nrap);
	sp=new int[a.size()+2];
	sp[0]=0;
	for(i=1;i<a.size();++i)
		sp[i]=sp[i-1]+a[i];
	int inf,sup;
	for(i=1;i<a.size();++i){
		if(i+l>a.size())
			break;
		else
			inf=sp[i+l-2];
		if(i+u>a.size())
			sup=sp[a.size()-1];
		else
			sup=sp[i+u-1];
		rez+=(a[i]*(sup-inf));
	}
	out<<rez;
	return 0;
}