Submission #1160466

#TimeUsernameProblemLanguageResultExecution timeMemory
1160466terrifierSure Bet (CEOI17_sure)C++20
100 / 100
53 ms1864 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define niga ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0)
#define yes cout<<"YES\n"
#define no cout<<"NO\n"
#define F first
#define S second
#define sz() size()
#define pb push_back
#define pf push_front
#define all(a) a.begin(), a.end()
#define bll(a) a.rbegin(), a.rend();
#define file(s) if (fopen(s".in", "r")) freopen(s".in", "r", stdin), freopen(s".out", "w", stdout)
/*
  a u t h o r (a b a);

──▒▒▒▒▒────▒▒▒▒▒────▒▒▒▒▒────▄████▄─────
─▒─▄▒─▄▒──▒─▄▒─▄▒──▒─▄▒─▄▒──███▄█▀───────
─▒▒▒▒▒▒▒──▒▒▒▒▒▒▒──▒▒▒▒▒▒▒─▐████─────────
─▒▒▒▒▒▒▒──▒▒▒▒▒▒▒──▒▒▒▒▒▒▒──█████▄───────
─▒─▒─▒─▒──▒─▒─▒─▒──▒─▒─▒─▒───▀████▀─────

*/
const int N = 2e5 + 9, mod =  1e9 + 7;
int n;
double a[N],b[N];
void solve(){
  cin >> n;
	for (int i=1;i<=n;i++)cin >> a[i] >> b[i];
	sort(a + 1,a + n + 1, greater<double>());
	sort(b + 1,b + n + 1, greater<double>());
	for (int i = 1; i <= n; i++){a[i] += a[i - 1];b[i] += b[i - 1];}
	double res = 0;
	for (int i = 0; i <= n; i++){
	  ll l = 0, r = n;
	  while (l <= r){
	    ll md = (l + r) >> 1;
	    ll x = a[i] - i - md, y = b[md] - i - md;
	    if (x > y){
	      l = md + 1;
	    }else{
	      r = md - 1;
	    }
	  }
	  if (l <= n)res = max(res, min(a[i] - l - i, b[l] - i - l));
	  if (r >= 0)res = max(res, min(a[i] - r - i, b[r] - r - i));
	}
	cout << fixed << setprecision(4) << res <<'\n';
}
signed main(){
  niga;
  int aba = 1;
  // file("name");
  // cin >> aba;
  while (aba --){
    solve();
  }
return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...