Submission #801997

#TimeUsernameProblemLanguageResultExecution timeMemory
801997JohannMizuyokan 2 (JOI23_mizuyokan2)C++14
15 / 100
4062 ms6032 KiB
#include "bits/stdc++.h" using namespace std; typedef long long ll; typedef vector<ll> vi; typedef vector<vi> vvi; #define sz(x) (int)(x).size() #define all(x) (x).begin(), (x).end() const int INF = 1e9; int N, Q; vi L; int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> N; L.resize(N); for (int i = 0; i < N; ++i) cin >> L[i]; cin >> Q; while (Q--) { ll x, y, a, b; cin >> x >> y >> a >> b; --x; L[x] = y; vi B(L.begin() + a, L.begin() + b); // starting with lower piece vi dp(sz(B), -INF); // dp[i] := number of zigzag pieces in prefix i with i as minimum dp[0] = 1; for (int i = 1; i < sz(B); ++i) { ll buffer = 0; for (int j = i - 1; j >= 0; --j) { buffer += B[j]; if (buffer > B[i]) { dp[i] = max(dp[i], 2LL); if (j > 0 && buffer > B[j - 1]) dp[i] = max(dp[i], dp[j - 1] + 2); } } } ll ans = max(1LL, dp.back()); ll buffer = 0; for (int i = sz(B) - 1; i > 0; --i) { buffer += B[i]; if (buffer > B[i - 1]) ans = max(ans, dp[i - 1] + 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...