Submission #1059847

#TimeUsernameProblemLanguageResultExecution timeMemory
1059847tolbiClosing Time (IOI23_closing)C++17
9 / 100
1098 ms9808 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]; if (i) dp2[i]+=dp2[i-1]; if (i) dp1[i]+=dp1[i-1]; } int ans = 0; function<long long(int,int,int)> query = [&](int ty, int l, int r)->long long{ if (l>r) return 0; long long hh = 0; if (ty==2){ hh = dp2[r]; if (l) hh-=dp2[l-1]; } else if (ty==3){ hh = dp3[r]; if (l) hh-=dp3[l-1]; } else { hh = dp1[r]; if (l) hh-=dp1[l-1]; } return hh; }; function<long long(int,int,int,int)> calc = [&](int al, int ar, int bl, int br)->long long{ if (max(al,bl)<=min(ar,br)){ long long ret = query(3,max(al,bl),min(ar,br)); ret+=query(1,al,max(al,bl)-1); ret+=query(1,min(ar,br)+1,ar); ret+=query(2,bl,max(al,bl)-1); ret+=query(2,min(ar,br)+1,br); return ret; } else { return query(1,al,ar)+query(2,bl,br); } }; for (int al = 0; al <= X; al++){ for (int ar = X; ar < N; ar++){ for (int bl = 0; bl <= Y; bl++){ if (calc(al,ar,bl,Y)>K) continue; int l = Y, r = N-1; while (l<r){ int mid = l+(r-l+1)/2; if (calc(al,ar,bl,mid)>K){ r=mid-1; } else l=mid; } ans=max(ans,ar-al+1+l-bl+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...