제출 #1027331

#제출 시각아이디문제언어결과실행 시간메모리
1027331vjudge1Sure Bet (CEOI17_sure)C++98
100 / 100
95 ms6740 KiB
// #pragma GCC optimize("O3,unroll-loops")
// #pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
//#pragma GCC target("arch=skylake")

//#pragma GCC optimize("03,unroll-loops")
//#pragma GCC target("arch=skylake")
#include<bits/stdc++.h>
#define int long long
#define pb push_back
#define fi first
#define se second
#define el cout << '\n';
//#define float long double
#define MASK(i) (1LL << (i))
//#define c_bit(i) __builtin_popcountll(i) // dem so bit dang bat
#define BIT(x, i) ((x) & MASK(i)) // trang thai bit i trong x
//#define SET_ON(x, i) ((x) | MASK(i)) // b?t bit i trong x
//#define SET_OFF(x, i) ((x) & ~MASK(i)) // tat bit i trong x
using namespace std;

const int N = 1e5+5;
const int inf = 1e18;
const int mod = 1e9+7;
const int limit = 3e6;
const int S = 350;

int n;


void solve(){
    cin>>n;
    long double a[n+5],b[n+5];
    long double pr1[n+5],pr2[n+5];
    for(int i=1; i<=n;i++){
    	cin>>a[i];
    	cin>>b[i];
	}
//	for(int i=1; i<=n; i++){
//		cout << a[i] << ' ' << b[i] << '\n';
//	}
	sort(a+1,a+1+n);sort(b+1,b+1+n);
//	for(int i=1; i<=n; i++){
//		cout << a[i] << ' ' << b[i] << '\n';
//	}
//	el;
	pr1[0]=0;pr2[0]=0;
	for(int i=1; i<=n; i++){
		pr1[i] = pr1[i-1] + a[n-i+1];
		pr2[i] = pr2[i-1] + b[n-i+1];
		//cout << pr1[i] << ' ' << pr2[i] << '\n';
	}
	long double ans = 0;
//	int l=1,r=n;
	for(int i=0; i<=n; i++){
		int l=0,r=n;
	    while(l<=r){
		int m1 = l+(r-l)/3;
		int m2 = r-(r-l)/3;
	    long double t1 = min((long double)pr1[i] - i -m1, (long double)pr2[m1]-i-m1);
		long double t2 = min((long double)pr1[i] - i-m2 , (long double)pr2[m2]-i-m2);
	//	cout <<  t1 << ' ' << t2 << '\n';
		if(t1<t2){
			ans = max(ans,t2);
			l=m1+1;
		}
		else {
			ans = max(ans , t1);
			r=m2-1;
		}
    }
	}
	cout << fixed << setprecision(4) << ans;
}

signed main(){
	// freopen("MAXSQR.INP", "r", stdin);
	 //freopen("MAXSQR.OUT", "w", stdout);
	ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);  
	int t=1;
    //cin>>t;
	while(t--){
	solve();el;
	//tuab
}  
}

// 23
// 10111
// 10110
// 10101
// 10011
// 00111
                                                      
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...