제출 #1158621

#제출 시각아이디문제언어결과실행 시간메모리
1158621HakunaArt Exhibition (JOI18_art)C++20
0 / 100
0 ms320 KiB
#include <bits/stdc++.h> using namespace std; int n; pair<long long, long long> p[(int)5e5 + 10]; long long pref[(int) 5e5 + 10]; pair<long long, long long> check(long long m) { int l = 1; long long ans = 0; long long sz = 0; for (int i = 1; i <= n; i++) { while (p[i].first - p[l].first > m) l++; if (pref[i] - pref[l - 1] > ans) { ans = pref[i] - pref[l - 1]; sz = p[i].first - p[l].first; } } return {ans, sz}; } int main() { ios::sync_with_stdio(0); cin.tie(0); cin >> n; for (int i = 1; i <= n; i++) { cin >> p[i].first >> p[i].second; } sort(p + 1, p + n + 1); for (int i = 1; i <= n; i++) { pref[i] = pref[i - 1] + p[i].second; } long long l = 0 , r = 1e15 + 50; for (int j = 1; j <= 200; j++) { long long m1 = l + (r - l) / 3; long long m2 = r - (r - l) / 3; if (pair<long long, long long> r1 = check(m1), r2 = check(m2); r1.first - m1 > r2.first - m2) { r = m2; } else { l = m1; } } long long ans = 0; for (long long j = l; j <= r; j++) { auto res = check(j); ans = max(ans, res.first - res.second); } cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...