Submission #1161765

#TimeUsernameProblemLanguageResultExecution timeMemory
1161765irmuunFish 3 (JOI24_fish3)C++20
9 / 100
2095 ms5164 KiB
#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define pb push_back
#define ff first
#define ss second
#define all(s) s.begin(),s.end()
#define rall(s) s.rbegin(),s.rend()

int main(){
	ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	ll n,d;
	cin>>n>>d;
	ll c[n+5];
	for(ll i=1;i<=n;i++){
		cin>>c[i];
	}
	ll q;
	cin>>q;
	ll a[n+5];
	while(q--){
		ll l,r;
		cin>>l>>r;
		for(ll i=l;i<=r;i++){
			a[i]=c[i];
		}
		ll ans=0,tot=0;
		for(ll i=l;i<=r;i++){
			a[i]-=tot;
			if(a[i]<0){
				ans=-1;
				break;
			}
			tot+=a[i]%d;
		}
		if(ans==-1){
			cout<<ans<<"\n";
			continue;
		}
		vector<ll>v;
		for(ll i=r;i>=l;i--){
			a[i]/=d;
			ans+=a[i];
			if(v.empty()||a[i]<a[v.back()]){
				v.pb(i);
			}
		}
		reverse(all(v));
		ll last=l-1,sum=0;
		for(ll i:v){
			a[i]-=sum;
			ans-=a[i]*(r-last);
			last=i;
			sum+=a[i];
		}
		cout<<ans<<"\n";
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...