Submission #1272805

#TimeUsernameProblemLanguageResultExecution timeMemory
1272805witek_cppLet's Win the Election (JOI22_ho_t3)C++20
21 / 100
1230 ms8384 KiB
#include <iostream> #include <vector> #include <algorithm> #include <iomanip> using namespace std; typedef long long ll; typedef long double ld; #define st first #define nd second #define f(a, c, b) for (int a = c; b > a; a++) #define pb push_back #define all(a) a.begin(), a.end() #define wczytaj(a, c, n) a.resize(n); f(i, c, n) cin >> a[i]; #define sz(a) int(a.size()) #define wypisz(a, c) f(i, c, sz(a)) cout << a[i] << " "; cout << "\n"; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, k; cin >> n >> k; const ld INF = 1'000'000'000'000; vector<pair<ll, ll>> a(n); f(i, 0, n) cin >> a[i].nd >> a[i].st; f(i, 0, n) if (a[i].st == -1) a[i].st = INF; sort(all(a)); vector<ld> A(n + 1); vector<ld> B(n + 1); f(i, 0, n) A[i + 1] = a[i].nd; f(i, 0, n) B[i + 1] = a[i].st; vector<vector<ld>> dp_suf(n + 2, vector<ld>(n + 2)); vector<vector<ld>> dp(n + 1, vector<ld>(n + 1)); ld ans = INF; f(ile, 0, k) { f(j, 1, n + 2) f(i, 1, n + 2) dp_suf[i][j] = INF; f(i, 1,n + 2) dp_suf[i][0] = 0; for (int i = n; i > 0; i--) { for (int j = (n - i + 1); j > 0; j--) { dp_suf[i][j] = min(dp_suf[i + 1][j], (dp_suf[i + 1][j - 1] + (A[i]/ld(ile + 1)))); } } if (ile == 0) { ans = min(ans, dp_suf[1][k]); continue; } f(i, 0, n + 1) f(j, 0,n + 1) dp[i][j] = INF; dp[0][0] = 0; f(i, 1, n + 1) { f(j, 1, min(ile, i) + 1) { dp[i][j] = min(dp[i][j], dp[i - 1][j] + A[i]/ld(ile + 1)); dp[i][j] = min(dp[i][j], dp[i - 1][j - 1] + (B[i]/ld(j))); } } f(i, 1, n + 1) { if (i <= k) ans = min(ans, dp[i][ile] + dp_suf[i + 1][k - i]); } } cout << fixed << setprecision(6) << ans; return 0; }
#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...