Cod sursa(job #1775728)
| Utilizator | Data | 10 octombrie 2016 17:33:52 | |
|---|---|---|---|
| Problema | Divk | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.62 kb |
#include <fstream>
using namespace std;
int N,K,A,B;
int a[500005];
int rmod[500005];
int rest[100005];
int main()
{
ifstream fin("divk.in");
ofstream fout("divk.out");
fin >> N >> K >> A >> B;
for (int i = 1; i <= N; i++)
fin >> a[i];
rmod[N] = a[N] % K;
for (int j = N-1; j >= 1; j--)
rmod[j] = (a[j] + rmod[j+1]) % K;
long long Sol = 0;
for (int i = N; i >= 1; i--) {
if (i <= N - A + 1)
rest[rmod[i+A]]++;
if (i < N - B + 1)
rest[rmod[i+B+1]]--;
Sol += rest[rmod[i]];
}
fout << Sol;
}
