제출 #163347

#제출 시각아이디문제언어결과실행 시간메모리
163347Knps4422Sure Bet (CEOI17_sure)C++14
100 / 100
250 ms5240 KiB
#include<bits/stdc++.h> #define rc(x) return cout<<x<<endl,0 #define pb push_back #define mkp make_pair #define in insert #define er erase #define fd find #define fr first #define sc second typedef long long ll; typedef long double ld; const int mod=1e9+7; using namespace std; int n; double a[100005], b[100005]; double sum_a[100005], sum_b[100005]; int main(){ cin >> n; for(int i = 1; i <= n ; i++){ cin >> a[i] >> b[i]; } sort(a+1,a+n+1); sort(b+1,b+n+1); reverse(a+1,a+n+1); reverse(b+1,b+n+1); for(int i = 1; i <= n; i++){ sum_a[i] = sum_a[i-1] + a[i]; sum_b[i] = sum_b[i-1] + b[i]; } double answer = 0; for(int i = 1; i <= n ; i++){ int l = 1, r = n; while(l < r){ int mid = (l+r)/2; if(sum_b[mid] >= sum_a[i]){ r = mid; }else{ l = mid + 1; } } //cout << i << ' ' << l << '\n'; answer = max(answer, min(sum_a[i]-i-l,sum_b[l]-i-l)); answer = max(answer, min(sum_a[i]-i-l+1,sum_b[l-1]-i-l+1)); } printf("%.4lf",(double)answer); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...