Cod sursa(job #2359510)
Utilizator | Data | 28 februarie 2019 21:35:51 | |
---|---|---|---|
Problema | Divk | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.59 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("divk.in");
ofstream fout("divk.out");
const int NMAX=500005;
const int KMAX=100005;
long long A, B, K, N, solutie;
long long sums[NMAX];
int remainders[KMAX];
int main()
{
fin>>N>>K>>A>>B;
for (int i=1, x; i<=N; i++)
{
fin>>x;
sums[i]+=sums[i-1]+x;
if (i-B-1>=0)
remainders[sums[i - B - 1] % K]--;
if (i - A >= 0)
remainders[sums[i - A] % K]++;
solutie+=remainders[sums[i]%K];
}
fout<<solutie;
}