| 比赛 |
NOIP2025模拟赛2 |
评测结果 |
AAAAAAAAAAAAAAAAAAAAAAAAA |
| 题目名称 |
博彩游戏 |
最终得分 |
100 |
| 用户昵称 |
李金泽 |
运行时间 |
0.914 s |
| 代码语言 |
C++ |
内存使用 |
2.21 MiB |
| 提交时间 |
2025-11-25 09:24:08 |
显示代码纯文本
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define N 100005
#define db double
#define fo(i,l,r) for(int i=l;i<=r;i++)
#define rf(i,r,l) for(int i=r;i>=l;i--)
using namespace std;
int n;db a[N],b[N],l,r,mid;const db eps=1e-9,ep=1e-6;
db min(db x,db y){return x<y?x:y;}
bool ck(db x)
{
int i=n,j=n;
db suma=0,sumb=0,now=0;
while(min(suma,sumb)-now+eps<x)
{
while(i&&suma-now+eps<x)suma+=a[i--],now++;
if(suma-now+eps<x)return 0;
while(j&&sumb-now+eps<x)sumb+=b[j--],now++;
if(sumb-now+eps<x)return 0;
}
return 1;
}
int read(){
int sum=0;bool f=0;char c=getchar();
for(;c<48||c>57;c=getchar())if(c==45)f=1;
for(;c>=48&&c<=57;c=getchar())sum=sum*10+(c&15);
return f?-sum:sum;
}
signed main(){
freopen("wager.in","r",stdin);freopen("wager.out","w",stdout);
n=read();
fo(i,1,n)scanf("%lf%lf",a+i,b+i);
sort(a+1,a+n+1);sort(b+1,b+n+1);
l=0;r=1e9;
while(l+ep<r)
{
mid=(l+r)/2;
if(ck(mid))l=mid;
else r=mid;
}
printf("%.4lf",l);
return 0;
}