#include <bits/stdc++.h>
using namespace std;
#define int long long
inline void solve()
{
int n,D;
cin>>n>>D;
int c[n];
for (auto& i:c)
cin>>i;
int pre[n+1]={};
for (int i=0;i<n;i++)
pre[i+1]=pre[i]+c[i];
int q;
cin>>q;
while (q--)
{
int l,r;
cin>>l>>r;
l--;r--;
bool w=c[r];
if (w==0)
{
int z=pre[r+1]-pre[l];
if (z&&D!=1)
{
cout<<-1<<endl;continue;
}
cout<<pre[r+1]-pre[l]<<endl;continue;
}
int st=l-1,en=r;
while (st+1<en)
{
int mid=(st+en)/2;
if (pre[r+1]-pre[mid]==r+1-mid)
en=mid;
else
st=mid;
}
int z=pre[en]-pre[l];
if (z&&D!=1)
{
cout<<-1<<endl;continue;
}
cout<<pre[en]-pre[l]<<endl;continue;
}
}
signed main()
{
ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
int t=1;
for (int i=1;i<=t;i++)
{
solve();
}
}
| # | 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... |