Cod sursa(job #1075933)

Utilizator ioanapopaPopa Ioana ioanapopa Data 9 ianuarie 2014 19:03:31
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>
 
using namespace std;
long long secvente[500001],modul[100001];
class Divk
{
int n,k,a,b;
long long sol;
int* v;
public:
	Divk()
	{
		sol = 0;
		 for(int i = 0 ; i < 500001 ; i++)
			 secvente[i]= 0 ;
		 for(int i = 0 ; i < 100001 ; i++)
			 modul[i] = 0 ;
	}
	void Read()
	{
		ifstream f("divk.in");
		ofstream g("divk.out");
		 f >> n >> k >> a >> b;
		 v = new int[n+3];
		 for(int i = 1 ; i <= n ; i++)
			 f>>v[i];
		     g << Solve();
		

	}
	long long Solve()
	{
		secvente[0] = 0;
		for(int i=1;i<=n;i++)
		{
			secvente[i] = (secvente[i-1] + v[i]) % k;
			if (i > b)
				modul[secvente[i-b-1]]--;
			if(i >= a)
				modul[ secvente[i-a] ]++;
			sol += modul[ secvente[i] ];
		}
	return sol;

	}
};
 
int main()
{
   Divk Object;
   Object.Read();
    return 0;
}