제출 #891893

#제출 시각아이디문제언어결과실행 시간메모리
891893goodspeed0208Art Exhibition (JOI18_art)C++14
100 / 100
291 ms56372 KiB
#include<iostream> #include<vector> #include<algorithm> #include<set> #include<map> #include<utility> #define int long long #define INF 1000000000000000000 #define pii pair<long long, long long> using namespace std; signed main() { ios::sync_with_stdio(false); cin.tie(0); int n; cin >> n; vector<pii>v(n); for(int i = 0 ; i < n ; i++) cin >> v[i].first >> v[i].second; sort(v.begin(), v.end()); vector<int>psum(n); psum[0] = v[0].second; for (int i = 1 ; i < n ; i++) psum[i] = psum[i-1] + v[i].second; int start = 0, end = n-1; set<pii>st; st.insert({0, n-1}); for (int i = n-2 ; i >= 0 ; i--) { int t = (v[n-1].first - v[i].first) - (psum[n-1] - psum[i]); st.insert({t, i}); /*if (v[n-1].first - v[i].first > psum[n-1] - psum[i]) end = i; cout << v[n-1].first - v[i].first << " " << psum[n-1] - psum[i] << " "; cout << end << "\n";*/ } int df = psum[n-1] - (v[n-1].first - v[0].first); int ans = 0; for (int i = 0 ; i < n ; i++) { pii p = *st.rbegin(); ans = max(ans, df + p.first); //cout << df << " " << p.first<< "\n"; int t = (v[n-1].first - v[i].first) - (psum[n-1] - psum[i]); st.erase({t, i}); if (i < n-1) df = df - v[i].second + v[i+1].first - v[i].first; //if (v[i].first - v[0].first > psum[i]) start = i; } cout << ans << "\n"; /*cout << "\n"; if (end <= start) start = end = n-1; cout << start << " " << end << "\n"; if (start == 0) cout << psum[end] - (v[end].first - v[start].first) << "\n"; else cout << psum[end] - psum[start-1] - (v[end].first - v[start].first) << "\n"; */ /*int ans = 0, start, end; for (int i = 0 ; i < n ; i++) { //cout << psum[i] << " "; for (int j = i ; j < n ; j++) { int t; if (i == 0) t = psum[j] - (v[j].first - v[i].first); else t = (psum[j] - psum[i-1]) - (v[j].first - v[i].first); if (t > ans) start = i, end = j; ans = max(ans, t); } } cout << start <<" " << end << "\n"; cout << ans << "\n";*/ }

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

art.cpp: In function 'int main()':
art.cpp:24:6: warning: unused variable 'start' [-Wunused-variable]
   24 |  int start = 0, end = n-1;
      |      ^~~~~
art.cpp:24:17: warning: unused variable 'end' [-Wunused-variable]
   24 |  int start = 0, end = n-1;
      |                 ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...