Submission #1266638

#TimeUsernameProblemLanguageResultExecution timeMemory
1266638nguynLet's Win the Election (JOI22_ho_t3)C++20
100 / 100
100 ms448 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define F first #define S second #define pb push_back #define pii pair<int, int> pii a[505]; int n, m; double res = 1e9; bool cmp(pii x, pii y) { if (x.F != y.F) return x.F < y.F; return x.S < y.S; } double f[505]; void cal(int k) { for (int i = 0; i <= n; i++) { f[i] = 1e9; } f[0] = 0; for (int i = 1; i <= n; i++) { // cout << a[i].F << ' ' << a[i].S << endl; for (int j = m - k; j >= 0; j--) { if (j < m - k) { f[j + 1] = min(f[j + 1], f[j] + (double)a[i].S / (k + 1)); } int x = i - j; if (0 < x && x <= k) f[j] += (double)a[i].F / x; } } // cout << f[n][k] << endl; // cout << f[m - k] << endl; res = min(res, f[m - k]); } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> m; for (int i = 1; i <= n; i++) { cin >> a[i].S >> a[i].F; if (a[i].F == -1) a[i].F = 1e9; } sort(a + 1, a + 1 + n, cmp); for (int i = 0; i < m; i++) { cal(i); } cout << fixed << setprecision(20) << res; }
#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...