Submission #1326214

#TimeUsernameProblemLanguageResultExecution timeMemory
1326214bbldrizzyLet's Win the Election (JOI22_ho_t3)C++20
100 / 100
154 ms508 KiB
#include <bits/stdc++.h> #include <ios> #include <iostream> #include <set> #include <random> using namespace std; using ll = double; using P = pair<double, double>; #define f first #define s second const ll MOD = 1e9+7; const ll inf = 4*1e18; int dx[4] = {0, 1, 0, -1}; int dy[4] = {1, 0, -1, 0}; long long md(long long a, long long m) { return (a % m + m) % m; } int main() { // freopen("input.in", "r", stdin); ios::sync_with_stdio(false); cin.tie(nullptr); ll n, k; cin >> n >> k; vector<P> v; for (int i = 0; i < n; i++) { ll x, y; cin >> x >> y; v.push_back({((y==-1) ? 1e9 : y), x}); } sort(v.begin(), v.end()); for (int i = 0; i < n; i++) { ll tmp = v[i].f; v[i].f = v[i].s; v[i].s = tmp; if (v[i].s == 1e9) v[i].s = -1; } ll M = 1e9; for (int i = 0; i <= k; i++) { vector<ll> dp1(i+1, 1e9); dp1[0] = 0; for (int j = 0; j < n; j++) { vector<ll> dp2(i+1, 1e9); for (int l = 0; l <= i; l++) { ll c = k - i; if (l < i) { dp2[l+1] = min(dp2[l+1], dp1[l] + v[j].f/(c+1)); } if (j-l < c) { if (v[j].s != -1) { dp2[l] = min(dp2[l], dp1[l] + v[j].s/(j+1-l)); } } else { dp2[l] = min(dp2[l], dp1[l]); } } dp1.swap(dp2); } M = min(M, dp1[i]); } cout << M; }
#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...