Cod sursa(job #2015613)
Utilizator | Alex Luchianov AlexandruLuchianov1 | Data | 26 august 2017 18:44:53 |
---|---|---|---|
Problema | Divk | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.52 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("divk.in");
ofstream out ("divk.out");
int const nmax = 500000;
int sum[1 + nmax];
int s[1 + nmax];///s[i] how many sum[j] == i are in range
int main()
{
int n , a , b ,k;
in>>n>>k>>a>>b;
long long stotal = 0;
for(int i = 1 ; i <= n ;i++){
in>>sum[i];
sum[i] = (sum[i - 1] + sum[i] ) % k;
if(a <= i){
s[sum[i - a]]++;
}
if(b < i){
s[sum[i - b - 1]]--;
}
stotal += s[sum[i]];
}
out<<stotal;
return 0;
}