Pagini recente » Cod sursa (job #2164297) | Cod sursa (job #172246) | Cod sursa (job #2710156) | Cod sursa (job #2001841) | Cod sursa (job #2049987)
#include <bits/stdc++.h>
using namespace std;
class Reader {
public:
Reader() {}
Reader(const char *file_name) {
input_file.open(file_name,std::ios::in | std::ios::binary);
input_file.sync_with_stdio(false);
index&=0;
input_file.read(buffer,SIZE); }
inline Reader &operator >>(int &n) {
for (; buffer[index]<'0' or buffer[index]>'9'; inc());
n&=0;
sign&=0;
sign|=(buffer[index-1]=='-');
for (; '0'<=buffer[index] and buffer[index]<='9'; inc())
n=(n<<1)+(n<<3)+buffer[index]-'0';
n^=((n^-n)&-sign);
return *this; }
~Reader() {
input_file.close(); }
private:
std::fstream input_file;
static const int SIZE=1<<17;
char buffer[SIZE];
int index,sign;
inline void inc() {
if(++index==SIZE)
index=0,input_file.read(buffer,SIZE); } };
Reader f("divk.in");
ofstream g("divk.out");
int N, K, A, B;
int SumRem[500001];
int Count[500001];
long long Ans = 0;
int main() {
f >> N >> K >> A >> B;
for (int i = 1; i <= N; i++) {
f >> SumRem[i];
SumRem[i] += SumRem[i - 1];
SumRem[i] %= K;
if (A <= i) {
Count[SumRem[i - A]]++;
if (B < i)
Count[SumRem[i - B - 1]]--; }
Ans += Count[SumRem[i]]; }
g << Ans; }