제출 #1308385

#제출 시각아이디문제언어결과실행 시간메모리
1308385thuhienneMizuyokan 2 (JOI23_mizuyokan2)C++20
15 / 100
4091 ms2756 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

#define re exit(0);

int n,d[250009];

int dp[250009];
ll pref[250009];

int calc(vector <int> & arr) {
	
	arr.insert(arr.begin(),0);
	arr.push_back(0);
	
	int n = (int)arr.size() - 1;
	
	for (int i = 1;i <= n;i++) pref[i] = pref[i - 1] + arr[i];

	dp[1] = 1;
	for (int i = 2;i <= n;i++) {
		dp[i] = 0;
		for (int j = i - 1;j >= 1;j--) {
			if (pref[i - 1] - pref[j - 1] > arr[i] && pref[i - 1] - pref[j - 1] > arr[j - 1]) {
				dp[i] = max(dp[i],dp[j - 1] + 2);
			}
		}
	}
	
	return max(dp[n - 1],dp[n] - 1);
	
}

void solve() {
	int x,y,a,b;cin >> x >> y >> a >> b;
	d[x] = y;
	
	vector <int> temp;
	for (int i = a + 1;i <= b;i++) temp.push_back(d[i]);
	
	cout << calc(temp) << '\n';
	
}

int main() {
  ios_base::sync_with_stdio(0);cin.tie(nullptr);

	cin >> n;
	for (int i = 1;i <= n;i++) cin >> d[i];
	
	int q;cin >> q;while (q--) solve();

}
#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...