比赛 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;
}