Submission #1110175

#TimeUsernameProblemLanguageResultExecution timeMemory
1110175vjudge1Fish 3 (JOI24_fish3)C++17
0 / 100
13 ms6480 KiB
#include<bits/stdc++.h>
#define fi first
#define se second
#define ll long long
#define pb push_back
using namespace std;
ll n,d,q,a[300005],r[300005],b[300005],bu[300005];
bool sub2=true;
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
//	freopen(".INP","r",stdin);
//	freopen(".OUT","w",stdout);
	cin>>n>>d;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		r[i]=a[i]%d;
	}
	cin>>q;
	if(q<=3000)
	{
		while(q--)
		{
			bool kt=true;
			int l,rr;
			ll mx=1e9;
			cin>>l>>rr;
			b[l]=0;
			bu[l]=(a[l]-d*b[l]-r[l])/d;
			if(bu[l]<0)
			{
				cout<<-1<<endl;
				continue;
			}
			mx=bu[l];
			for(int i=l+1;i<=rr;i++)
			{
				if(r[i]<r[i-1]) b[i]=b[i-1]+1;
				else b[i]=b[i-1];
				
				bu[i]=(a[i]-d*b[i]-r[i])/d;
				if(bu[i]<0)
				{
					kt=false;
					break;
				}
				mx=min(mx,bu[i]);
			}
			
			if(!kt)
			{
				cout<<-1<<endl;
				continue;
			}
			
			int ans=0;
			for(int i=l;i<=rr;i++)
			{
				ans+=(a[i]-(b[i]+mx)*d-r[i])/d;
			}
			cout<<ans<<endl;
			
		}
		
		return 0;
	}
	return 0;
}
#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...