Cod sursa(job #689636)

Utilizator vlad.doruIon Vlad-Doru vlad.doru Data 24 februarie 2012 18:22:44
Problema Divk Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <fstream>
#include <vector>

using namespace std;

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

const int N=500001;
const int K=100000;

int k,a,b,n;
int s[N];
long long rez;

vector <int> v[K];

int main(){
	int i,j,k,x;
	in>>n>>k>>a>>b;
	for(i=1;i<=n;++i){
		in>>x;
		s[i]=(s[i-1]+x)%k;
		if(s[i]==0 && i>=a && i<=b )
			rez++;
		v[s[i]].push_back(i);
	}
	for(i=0;i<=k;++i){
		if(v[i].size()<=1)
			continue;
		for(j=0;j<v[i].size()-1;++j){
			for(k=j+1;k<v[i].size();++k){
				if(v[i][k]-v[i][j]>=a && v[i][k]-v[i][j]<=b)			
					rez++;
			}
		}
	}
	out<<rez;
	return 0;
}