Submission #1158001

#TimeUsernameProblemLanguageResultExecution timeMemory
1158001ocasuSure Bet (CEOI17_sure)C++20
0 / 100
0 ms396 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int MUL=10000; signed main(){ int n; cin>>n; vector<int> a(n),b(n); for (int i=0; i<n; i++) { double x,y; cin>>x>>y; a[i]=x*MUL, b[i]=y*MUL; } sort(a.begin(),a.end(),greater<int>()), sort(b.begin(),b.end(),greater<int>()); vector<int> pa(n), pb(n); pa[0]=a[0], pb[0]=b[0]; for (int i=1; i<n; i++) pa[i]=pa[i-1]+a[i], pb[i]=pb[i-1]+b[i]; int ans=0; for (int i=0; i<n; i++){ //cout<<pa[i]<<' '; int sA = pa[i]; //binary search in min size subset in B that is >= sA int ind=lower_bound(pb.begin(),pb.end(),sA) - pb.begin(); if (ind<n) { ans=max(ans, sA -MUL*( i+1 + ind+1)); //cout<<"A: "<<i<<' '<<(i+1+ind+1)<<'\n'; } } //cout<<'\n'; for (int i=0; i<n; i++){ int sB = pb[i]; //binary search in min size subset in B that is >= sA int ind=lower_bound(pa.begin(),pa.end(),sB) - pa.begin(); if (ind<n) { ans=max(ans, sB - MUL*( i+1 + ind+1)); //cout<<"B: "<<i<<' '<<(i+1+ind+1)<<'\n'; } } double x = ((double)ans/MUL); printf("%.4lf",(double)x); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...