Cod sursa(job #577515)

Utilizator dtoniucDaniel Toniuc dtoniuc Data 10 aprilie 2011 12:56:31
Problema Divk Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<iostream>
#include <fstream>
using namespace std;
int n, vec[500001],sum[500001],k,a,b;
long long t;
void citire()
{
	ifstream fin("divk.in");
	fin>>n>>k>>a>>b;
	for (int i=1;i<=n;i++)
		fin>>vec[i];
}
int main ()
{
	citire();
	ofstream fout("divk.out");
	for(int i=1;i<=n;i++)
		if(i<=b) sum[i]=sum[i-1]+vec[i];
		else 
			sum[i]=sum[i-1]+vec[i]-vec[i-b];
	for(int i=b;i>=a;i--)
	{
		int r=i;
		while (r>=a)
		{
			if((sum[i]-sum[i-r])%k==0) t++;
			r--;
		}
	}
	for(int i=b+1;i<=n;i++)
	{
		if(sum[i]%k==0) t++;
		int r=b-1,s=0;
		while (r>=a)
		{
			s+=vec[i-r];
			if((sum[i]-s)%k==0) t++;
			r--;
		}
	}
	fout<<t;
	return 0;
}