제출 #545719

#제출 시각아이디문제언어결과실행 시간메모리
545719Sohsoh84Sure Bet (CEOI17_sure)C++17
100 / 100
96 ms18496 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll, ll> pll; #define all(x) (x).begin(),(x).end() #define X first #define Y second #define sep ' ' #define endl '\n' #define debug(x) cerr << #x << ": " << x << endl; const ll MAXN = 1e6 + 10; const ll HMM = 1e4; int n; ll A[MAXN], B[MAXN], ans, ps[MAXN]; inline void f() { for (int i = 1; i <= n; i++) ps[i] = ps[i - 1] + B[i]; ll s = 0; for (int i = 1; i <= n; i++) { s += A[i]; if (s > ps[n]) break; int ind = lower_bound(ps, ps + n + 1, s) - ps; ans = max(ans, s - HMM * (ind + i)); assert(ps[ind] >= s); } } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n; for (int i = 1; i <= n; i++) { double a, b; cin >> a >> b; A[i] = round(a * HMM); B[i] = round(b * HMM); } sort(A + 1, A + n + 1, greater<ll>()); sort(B + 1, B + n + 1, greater<ll>()); f(); swap(A, B); f(); debug(ans) cout << setprecision(4) << fixed << double(ans) / HMM << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...