Submission #1325673

#TimeUsernameProblemLanguageResultExecution timeMemory
1325673pastaSure Bet (CEOI17_sure)C++20
100 / 100
45 ms1952 KiB
//Oh? You're Approaching Me?
 
#include <bits/stdc++.h>
//#include <fstream>
using namespace std;
//  
#define int long long

typedef long long ll;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;
 
 
// #pragma GCC optimize("O3,unroll-loops")
#define migmig     		    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define pb          		push_back
#define F           		first
#define S           		second
#define SZ(x)       		ll((x).size())
#define all(x)      		(x).begin(), (x).end()
#define cl          		clear
#define endl        		'\n'
#define deb(x)    			cerr << #x << " = " << x << '\n'
#define dokme(x)			{cout << x << endl; return;}
#define wtf					cout << "[ahaaaaaaaaaaaaaaaa]" << endl;
 
const int maxn = 2e5 + 100;
const int mod = 998244353;
const int inf = 1e18 + 5;
const int LOG = 61;
#define mid		((l + r) / 2)
#define lc		(id * 2)
#define rc		(lc + 1)
//g++ main.cpp -o main && main.exe

int n;
double a[maxn], b[maxn];

signed main() {
	migmig;
	cin >> n;
	for (int i = 0; i < n; i++)
		cin >> a[i] >> b[i];
	sort(a, a + n);
	sort(b, b + n);
	reverse(a, a + n);
	reverse(b, b + n);
	
	int pa = 0, pb = 0;
	double ans = 0, sa = 0, sb = 0;
	while (pa < n && pb < n) {
		if (sa < sb) {
			sa += a[pa];
			pa++;
		}
		else {
			sb += b[pb];
			pb++;
		}
		ans = max(ans, min(sa, sb) - pa - pb);
	}
	
	while (pa < n) {
		sa += a[pa];
		pa++;
		ans = max(ans, min(sa, sb) - pa - pb);
	}
	
	while (pb < n) {
		sb += b[pb];
		pb++;
		ans = max(ans, min(sa, sb) - pa - pb);
	}
	
	cout << fixed << setprecision(4) << ans << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...