제출 #38770

#제출 시각아이디문제언어결과실행 시간메모리
38770WaschbarGap (APIO16_gap)C++14
47.68 / 100
173 ms11348 KiB
#include <bits/stdc++.h> #include "gap.h" using namespace std; const long long INF = 1e18; long long findGap(int T, int N) { multiset < pair< long long,pair<long long,long long> > > st; long long mn, mx; MinMax(0ll,INF,&mn,&mx); st.insert({-(mx-mn),{mn,mx}}); long long ans = 0; if(N == 2){ return mx - mn; } if (T == 1){ for (int i=1;i<(N+1)/2;i++){ long long mmn, mmx; MinMax(mn+1,mx-1,&mmn,&mmx); ans = max(ans,mmn-mn); ans = max(ans,mx-mmx); mn = mmn; mx = mmx; } ans = max(ans,mx-mn); return ans; } long long mnds = (mx-mn)/(N-1); int kk = 0; if(mn != -1) kk++; if(mn != mx) kk++; while(!st.empty()) { long long L, R; if(abs(st.begin()->first) <= ans) return ans; L = st.begin()->second.first; R = st.begin()->second.second; st.erase(st.begin()); long long a1, a2, a3, a4; a1 = a1 = a3 = a4 = -1; if(L != (L+R)/2 && ((L+R)/2-L) >= mnds) { MinMax(L,(L+R)/2,&a1,&a2); if(a1 != -1) kk++; if(a2 != a1) kk++; } if(R != (L+R)/2+1 && (R-(L+R)/2+1) >= mnds) { MinMax((L+R)/2+1,R,&a3,&a4); if(a3 != -1) kk++; if(a4 != a1) kk++; } if(a1 == a2 && a1 != -1) ans = max(ans,a2-L); if(a2-a1 == 1 && a1 != -1) ans = max(ans,1ll); if(a1-L == 1 && a1 != -1) ans = max(ans,1ll); if(a3 == a4 && a4 != -1) ans = max(ans,R-a3); if(a4-a3 == 1 && a3 != -1) ans = max(ans,1ll); if(R-a4 == 1 && a4 != -1) ans = max(ans,1ll); if(a2 != -1 && a3 != -1) ans = max(ans,a3-a2); if(a3 == -1 && a1 == -1) ans = max(ans,R-L); if(a1 == -1 && a3 != -1) ans = max(ans,a3-L); if(a3 == -1 && a2 != -1) ans = max(ans,R-a2); if(a1 != -1 && a1-L > 1) st.insert({L-a1,{L,a1}}); if(a1 != -1 && a2-a1 > 1) st.insert({a1-a2,{a1,a2}}); if(a1 != -1 && a3 != -1 && a3-a2 > 1) st.insert({a2-a3,{a2,a3}}); if(a3 != -1 && a4-a3 > 1) st.insert({a3-a4,{a3,a4}}); if(a3 != -1 && R-a4 > 1) st.insert({a4-R,{a4,R}}); } return ans; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

gap.cpp: In function 'long long int findGap(int, int)':
gap.cpp:47:25: warning: operation on 'a1' may be undefined [-Wsequence-point]
   a1 = a1 = a3 = a4 = -1;
                         ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...