Cod sursa(job #641031)
| Utilizator | Data | 26 noiembrie 2011 23:34:36 | |
|---|---|---|---|
| Problema | Divk | Scor | 90 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.54 kb |
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
#define maxN 500005
#define maxK 100005
int v[maxN], nr_rest[maxK], ans;
int main()
{
ifstream f ("divk.in");
ofstream g ("divk.out");
int N, K, A, B;
f >> N >> K >> A >> B;
for (int i = 1; i <= N; ++ i)
{
int c;
f >> c;
v[i] = (v[i - 1] + c) % K;
if (i >= A)
{
++ nr_rest[v[i - A]];
if (i - B - 1 >= 0) -- nr_rest[v[i - B - 1]];
ans += nr_rest[v[i]];
}
}
g << ans;
return 0;
}
