#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
int n, d; cin >> n >> d;
vector<int> c(n, 0);
for(int i = 0; i < n; i ++){
cin >> c[i];
}
int q; cin >> q;
vector<int> prefix(n+1, 0);
vector<int> bad(n+1, 0);
vector<int> lastzero(n+1, 0);
for(int i = 0; i < n; i ++){
prefix[i+1] = prefix[i] + c[i];
bad[i+1] = bad[i];
if(i > 0 && c[i] == 0 && c[i-1] == 1){
bad[i+1] += 1;
}
if(i > 0){
if(c[i] == 0){
lastzero[i] = i + 1;
} else {
lastzero[i] = lastzero[i-1];
}
}
}
/*for(int i = 0; i < n + 1; i ++){
cout << lastzero[i] << " ";
} cout << "\n";*/
for(int i = 0; i < q; i ++){
//vector<int> cc = c;
int res = 0;
int l, r; cin >> l >> r;
l -= 1;
r -= 1;
if(d != 1){
if(bad[r + 1] != bad[l + 1]){
res = -1;
}
} else {
if(prefix[lastzero[r]] >= prefix[l + 1]){
res = prefix[lastzero[r]] - prefix[l + 1];
} else {
res = 0;
}
}
//cout << " - ";
cout << res << "\n";
/*for(int i = r - 1; i >= l; i --){
if(cc[i] > cc[i+1]){
res += ceil((double)(cc[i] - cc[i+1]) / d);
cc[i] -= ceil((double)(cc[i] - cc[i+1]) / d) * d;
}
}
for(int i = l; i <= r; i ++){
if(cc[i] < 0) res = -1;
}
//cout << " - " << res << "\n";
cout << res << "\n";*/
}
}
/*
g++ -std=gnu++17 -O2 -pipe -o fish fish.cpp
7 1
0 0 1 0 1 1 0
7
1 2
1 3
1 4
1 5
1 6
1 7
6 6
*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |