# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
397080 | Nicholas_Patrick | Sure Bet (CEOI17_sure) | C++17 | 91 ms | 4368 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <cstdio>
#include <queue>
#include <cmath>
#include <algorithm>
using namespace std;
int main(){
int n;
scanf("%d", &n);
vector<int> a(n), b(n);
for(int i=n; i--;){
double x, y;
scanf("%lf%lf", &x, &y);
a[i]=x*10000+0.1;
b[i]=y*10000+0.1;
}
sort(a.rbegin(), a.rend());
sort(b.rbegin(), b.rend());
vector<long long> psa(n+1), psb(n+1);
psa[0]=psb[0]=0;
for(int i=0; i<n; i++){
psa[i+1]=psa[i]+a[i];
psb[i+1]=psb[i]+b[i];
}
long long best=0;
for(int i=0; i<=n; i++){
int low=0, high=n, mid;//candy[]
while(low<=high){
mid=low+high>>1;
long long tota=psa[mid]-(mid+i)*10000;
long long totb=psb[i]-(mid+i)*10000;
best=max(best, min(tota, totb));
if(tota<totb){
low=mid+1;
}else{
high=mid-1;
}
}
}
printf("%.4lf\n", best/10000.0);
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |