제출 #1046272

#제출 시각아이디문제언어결과실행 시간메모리
1046272vjudge1Just Long Neckties (JOI20_ho_t1)C++17
100 / 100
149 ms10836 KiB
#include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; vector<pair<int,int>> A(N + 1); vector<int> O(N + 1); for(int i = 0;i <= N; ++i){ cin >> A[i].first; A[i].second = i; } vector<int> B(N); for(int i = 0;i < N; ++i){ cin >> B[i]; } sort(A.begin(),A.end()); sort(B.begin(),B.end()); for(int i = 0;i <= N; ++i) O[A[i].second] = i; vector<int> pref(N); for(int i = 0;i < N; ++i){ if(i > 0) pref[i] = max(pref[i - 1], max(A[i].first - B[i], 0)); else pref[i] = max(A[i].first - B[i], 0); } vector<int> suf(N); for(int i = N - 1;i >= 0; --i){ if(i < N-1) suf[i] = max(suf[i + 1],max(A[i + 1].first - B[i],0)); else suf[i] = max(A[i + 1].first - B[i],0); } for(int i = 0;i <= N; ++i){ if(O[i] == 0){ cout << suf[0]; } else if(O[i] == N){ cout << pref[N-1]; } else{ cout << max(pref[O[i] - 1], suf[O[i]]); } if(i != N) cout << " "; else cout << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...