Cod sursa(job #529384)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 4 februarie 2011 20:55:16
Problema Divk Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<stdio.h>
#include<vector>
#define Nmax 100010
using namespace std;
int x,i,n,k,a,b,val,dif,r,N,j,sol;

vector<int> V[Nmax];

int main()
{
	freopen("divk.in","r",stdin);
	freopen("divk.out","w",stdout);

	scanf("%d %d %d %d",&n,&k,&a,&b);

	V[0].push_back(0);
	
	for( i = 1 ; i <= n ; ++i )
	{ 
		scanf("%d",&x);
		r=(r+x)%k;
		
		V[r].push_back(i);
		
		N=V[r].size();
		val=V[r][N-1];
		
		for( j = N-1 ; j >= 0 ; --j )
		{
			dif = val - V[r][j] ;
			
			if( dif >= a && dif <= b ) ++sol ;
			
			else if( dif > b )  break;
		}
	}

	printf("%d",sol);

	return 0;
}