Submission #1059769

#TimeUsernameProblemLanguageResultExecution timeMemory
1059769tolbiClosing Time (IOI23_closing)C++17
9 / 100
1055 ms13200 KiB
#include "closing.h" #include <bits/stdc++.h> using namespace std; int max_score(int N, int X, int Y, long long K, std::vector<int> U, std::vector<int> V, std::vector<int> W) { vector<long long> dp1(N); vector<long long> dp2(N); vector<long long> dp3(N); long long cur = 0; for (int i = X-1; i >= 0; i--){ cur+=W[i]; dp1[i]=cur; } cur=0; for (int i = X+1; i < N; i++){ cur+=W[i-1]; dp1[i]=cur; } cur = 0; for (int i = Y-1; i >= 0; i--){ cur+=W[i]; dp2[i]=cur; } cur=0; for (int i = Y+1; i < N; i++){ cur+=W[i-1]; dp2[i]=cur; } for (int i = 0; i < N; i++){ dp3[i]=max(dp1[i],dp2[i]); if (i) dp3[i]+=dp3[i-1]; } int ans = 0; for (int l = 0; l <= Y; l++){ for (int r = max(X,l); r < N; r++){ long long cur = dp3[r]; if (l) cur-=dp3[l-1]; if (cur>K) break; int rbound = N-1; for (int j = r+1; j < N; j++){ cur+=dp2[j]; } for (int j = l-1; j >= 0; j--){ cur+=dp1[j]; while (cur>K){ cur-=dp2[rbound]; rbound--; if (rbound==r) break; } if (cur<=K && rbound>=Y && j<=X){ ans=max(ans,rbound-l+1+r-j+1); } } } } for (int a = 0; a <= X; a++){ for (int b = Y; b < N; b++){ long long cur = 0; for (int i = a; i <= X; i++){ cur+=dp1[i]; } for (int i = Y; i <= b; i++){ cur+=dp2[i]; } if (cur>K) continue; int rbound = X; int lbound = Y; while (rbound+1 < lbound){ if (dp1[rbound+1] < dp2[lbound-1]){ rbound++; cur+=dp1[rbound]; if (cur>K){ rbound--; break; } } else { lbound--; cur+=dp2[lbound]; if (cur>K){ lbound++; break; } } } ans=max(ans,rbound-a+1+b-lbound+1); } } return ans; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...