Submission #1221480

#TimeUsernameProblemLanguageResultExecution timeMemory
1221480vako_pSure Bet (CEOI17_sure)C++20
60 / 100
20 ms1868 KiB
#include <bits/stdc++.h> 
using namespace std;
#define ll long long
#define pb push_back
#define ff first
#define sd second
#define debug(x) cerr << #x << "----> " << x << endl;
//#pragma GCC optimize("unroll-loops")
//#pragma GCC optimize("Ofast")
//#pragma GCC optimize("O3")

const int mxN = 1e6 + 5;
ll n,a[mxN],b[mxN];

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	ll ans = 0;
	cin >> n;
	ll sz = 10000;
	for(int i = 1; i <= n; i++){
		string s,s1;
		cin >> s;
		ll val = 1,idx = s.size() - 1;
		for(int j = 0; j < s.size(); j++){
			if(s[j] == '.'){
				idx = j;
				break;
			}
		}
		for(int j = 0; j < 5 - (s.size() - idx); j++) val *= 10;
		for(int j = s.size() - 1; j >= 0; j--){
			if(s[j] == '.') continue;
			a[i] += val * (s[j] - '0');
			val *= 10;
		}
		cin >> s;
		val = 1;idx = s.size() - 1;
		for(int j = 0; j < s.size(); j++){
			if(s[j] == '.'){
				idx = j;
				break;
			}
		}
		for(int j = 0; j < 5 - (ll)(s.size() - idx); j++) val *= 10;
		for(int j = s.size() - 1; j >= 0; j--){
			if(s[j] == '.') continue;
			b[i] += val * (s[j] - '0');
			val *= 10;
		}
	}
	sort(a + 1, a + n + 1);
	reverse(a + 1, a + n + 1);
	sort(b + 1, b + n + 1);
	reverse(b + 1, b + n + 1);
	ans = max(ans, min(a[1] - 20000, b[1] - 20000));
	ll l = 2,l1 = 2,sum = a[1] - 20000, sum1 = b[1] - 20000;
	for(int i = 3; i <= 2 * n; i++){
		if((sum < sum1 or l1 > n) and l <= n){
			sum += a[l++] - 10000;
			sum1 -= 10000;
		}
		else{
			sum1 += b[l1++] - 10000;
			sum -= 10000;
		}
		ans = max(ans, min(sum, sum1));
	}
	if(ans == 0) cout << "0.0000";
	else cout << ans / 10000 << "." << ans % 10000;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...