Cod sursa(job #664535)

Utilizator toniobFMI - Barbalau Antonio toniob Data 20 ianuarie 2012 12:05:36
Problema Divk Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
using namespace std;

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

int n,a,b,k,cnt[500001],ant,v[500003];
long long rez;

int main () {
	in >> n >>k >>a>>b;
	
	ant = 0;
	for (int i = 1; i <= a; ++i) {
		in >> v[i];
		v[i] = (v[i] + ant) % k;
		ant = v[i];
		if (v[i]==0)++rez;
	}
	
	for (int i = a+1; i <= b + 2; ++i){
		in >> v[i];
		v[i] = (v[i] + ant) % k;
		ant = v[i];
		
		cnt[v[i-a]]++;
		if (v[i]==0)++rez;
		
		rez += (cnt[v[i]]==0?0:cnt[v[i]] - 1);
	}
	
	for (int i = b + 2; i <= n; ++i) {
		in >> v[i];
		v[i] = (v[i] + ant) % k;
		ant = v[i];
		
		cnt[v[i-b-2]]--;
		cnt[v[i-a]]++;
		if (v[i]==0)++rez;
		
		rez += (cnt[v[i]]==0?0:cnt[v[i]] - 1);
	}
	
	out << rez;
}