Cod sursa(job #2500533)

Utilizator mircearoataMircea Roata Palade mircearoata Data 28 noiembrie 2019 10:02:05
Problema Divk Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.66 kb
#pragma GCC optimize("O3")

#include <iostream>
#include <fstream>
#include <vector>

#define int long long

using namespace std;

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

int n, k, a, b, sum, ans;

vector<int> sp[100005];

int32_t main()
{
	in >> n >> k >> a >> b;
	sp[0].push_back(0);
	for (int i = 1; i <= n; i++)
	{
		int x;
		in >> x;
		sum += x;
		sum %= k;
		sp[sum].push_back(i);
	}
	for (int i = 0; i < k; i++)
	{
		int la = 0, lb = 0;
		for (int j = 0; j < sp[i].size(); j++)
		{
			while (sp[i][j] - sp[i][la] >= a)
				la++;
			while (sp[i][j] - sp[i][lb] > b)
				lb++;
			ans += la - lb;
		}
	}
	out << ans;
}