Cod sursa(job #1126207)
| Utilizator | Data | 26 februarie 2014 21:53:35 | |
|---|---|---|---|
| Problema | Divk | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.58 kb |
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("divk.in");
ofstream fout ("divk.out");
const int NMAX = 500009;
const int KMAX = 100009;
int N; int K; int A; int B;long long V[NMAX];long long nr[NMAX]; long long sol; long long T[NMAX];
int main() {
fin >> N >> K >> A >>B;
int sum = 0;
for(int i = 1; i <= N; ++i) {
fin >> V[i];
T[i] = (T[i - 1] + V[i]) % K;
if(i >= A) nr[T[i - A]]++;
if(i > B) nr[T[ i - B - 1 ]]--;
sol += nr[T[i]];
}
fout << sol;
return 0;
}
