Submission #1206811

#TimeUsernameProblemLanguageResultExecution timeMemory
1206811emptypringlescanMizuyokan 2 (JOI23_mizuyokan2)C++17
0 / 100
4094 ms4212 KiB
#include <bits/stdc++.h>
using namespace std;
int n,q;
long long arr[250005];
int32_t main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin >> n;
	for(int i=1; i<=n; i++) cin >> arr[i];
	cin >> q;
	while(q--){
		int a;
		long long b;
		int c,d;
		cin >> a >> b >> c >> d;
		c++;
		arr[a]=b;
		long long dp[n+1];
		memset(dp,0,sizeof(dp));
		dp[1]=1;
		for(int i=2; i<=n; i++) dp[i]=-1e8;
		for(int i=2; i<=d-c+1; i++){
			long long sm=0;
			for(int j=i-1; j>0; j--){
				sm+=arr[c+j-1];
				if(sm<=arr[c+i-1]) continue;
				if(j>c&&arr[c+j-2]>=sm) continue;
				//cout << j << ' ' << i << ' ' << sm << ' ' << dp[j-1] << '\n';
				dp[i]=max(dp[i],dp[j-1]+2);
			}
			//cout << dp[i] << ' ';
		}
		long long ans=max(1ll,dp[d-c+1]),sm=0;
		for(int i=d-c; i>0; i--){
			sm+=arr[c+i];
			if(arr[c+i-1]<sm) ans=max(ans,dp[i]+1);
		}
		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...
#Verdict Execution timeMemoryGrader output
Fetching results...