Submission #1216362

#TimeUsernameProblemLanguageResultExecution timeMemory
1216362trimkusLet's Win the Election (JOI22_ho_t3)C++20
61 / 100
2594 ms12316 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using ld = long double; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, k; cin >> n >> k; //~ cerr << "A\n"; vector<array<ld, 2>> a(n); int cnt = 0; for (int i = 0; i < n; ++i) { for (int j = 0; j < 2; ++j) { cin >> a[i][j]; } cnt += (a[i][1] != -1); swap(a[i][0], a[i][1]); } sort(begin(a), end(a)); ld res = LLONG_MAX; auto chmin = [&](ld& x, ld y) -> void { x = min(x, y); }; //~ cerr << "a\n"; for (int take = 0; take <= min(k, cnt); ++take) { vector<vector<vector<ld>>> dp(2, vector<vector<ld>>(n + 1, vector<ld>(n + 1, 1e18))); dp[0][0][0] = 0; for (int j = 0; j < n; ++j) { int p = j & 1; for (int l = 0; l <= k; ++l) { for (int z = 0; z <= min(take, l); ++z) { dp[p ^ 1][l][z] = dp[p][l][z]; if (l > 0) { chmin(dp[p ^ 1][l][z], dp[p][l - 1][z] + a[j][1] / (take + 1)); } if (a[j][0] != -1 && z > 0) { assert(l > 0); chmin(dp[p ^ 1][l][z], dp[p][l - 1][z - 1] + a[j][0] / z); } } } } //~ cerr << take << " " << k << "\n"; res = min(res, dp[n & 1][k][take]); } cout << fixed << setprecision(3) << res << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...