Submission #604926

#TimeUsernameProblemLanguageResultExecution timeMemory
604926pakhomoveeSure Bet (CEOI17_sure)C++17
100 / 100
122 ms8340 KiB
#include <iostream>
#include <vector>
#include <random>
#include <algorithm>
#include <cassert>
#include <cstring>
#include <iomanip>

using namespace std;

int32_t main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n;
    cin >> n;
    vector<double> a(n);
    vector<double> b(n);
    for (int i = 0; i < n; ++i) {
        cin >> a[i] >> b[i];
    }
    sort(a.rbegin(), a.rend());
    sort(b.rbegin(), b.rend());
    vector<double> pa(n + 1, 0);
    vector<double> pb(n + 1, 0);
    for (int i = 1; i <= n; ++i) {
        pa[i] = pa[i - 1] + a[i - 1];
        pb[i] = pb[i - 1] + b[i - 1];
    }
    auto slv = [&] (vector<double> pa, vector<double> pb) {
        double ans = 0;
        for (int i = 0; i <= n; ++i) {
            if (pb.back() < pa[i]) break;
            int j = lower_bound(pb.begin(), pb.end(), pa[i]) - pb.begin();
            ans = max(ans, pa[i] - i - j);
        }
        return ans;
    };
    cout << fixed << setprecision(4) << max(slv(pa, pb), slv(pb, pa));
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...