제출 #584820

#제출 시각아이디문제언어결과실행 시간메모리
584820amunduzbaevSure Bet (CEOI17_sure)C++17
100 / 100
86 ms4412 KiB
#include "bits/stdc++.h"
using namespace std;
 
#define ar array
typedef int64_t ll;

signed main(){
	ios::sync_with_stdio(0); cin.tie(0);
	
	int n; cin>>n;
	vector<double> a(n), b(n);
	for(int i=0;i<n;i++){
		cin>>a[i]>>b[i];
	}
	sort(a.rbegin(), a.rend());
	sort(b.rbegin(), b.rend());
	a.insert(a.begin(), 0);
	b.insert(b.begin(), 0);
	for(int i=1;i<=n;i++){
		a[i] += a[i-1];
	}
	for(int i=1;i<=n;i++){
		b[i] += b[i-1];
	}
	
	//~ for(int i=1;i<=n;i++){
		//~ cout<<a[i]<<" ";
	//~ } cout<<"\n";
	//~ for(int i=1;i<=n;i++){
		//~ cout<<b[i]<<" ";
	//~ } cout<<"\n";
	
	double res = -1e9;
	for(int i=0;i<=n;i++){
		int j = lower_bound(b.begin(), b.end(), a[i]) - b.begin();
		if(j <= n && a[i] <= b[j]){
			res = max(res, a[i] - i - j);
		}
	}
	
	for(int i=0;i<=n;i++){
		int j = lower_bound(a.begin(), a.end(), b[i]) - a.begin();
		if(j <= n && b[i] <= a[j]){
			res = max(res, b[i] - i - j);
		}
	}
	
	//~ for(int i=0;i<=n;i++){
		//~ for(int j=0;j<=n;j++){
			//~ res = max(res, min(a[i], b[j]) - i - j);
		//~ }
	//~ }
	
	//~ printf("%.4lf",(double)res);
	cout<<fixed<<setprecision(4)<<res<<"\n";
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...