Submission #654215

#TimeUsernameProblemLanguageResultExecution timeMemory
654215Ronin13전선 연결 (IOI17_wiring)C++14
20 / 100
25 ms3788 KiB
#include "wiring.h" #include <bits/stdc++.h> #define ll long long #define f first #define s second #define pii pair<int,int> #define pll pair<ll,ll> #define pb push_back #define epb emplace_back #define ull unsigned ll using namespace std; long long min_total_length(std::vector<int> r, std::vector<int> b) { if(r.size() > 2000 || b.size() > 2000){ ll n = r.size(), m = b.size(); ll s1 = 0, s2 = 0; for(ll to : r) s1 += to; for(ll to : b) s2 += to; ll ans = 1e18; for(ll cnt = max(n, m); cnt <= 1e6; cnt++){ ans = min(ans, s2 - s1 - (cnt - n) * r.back() + (cnt - m) * b[0]); } return ans; } int n = r.size(), m = b.size(); ll dp[n + 1][m + 1]; for(int i = 0; i <= n; i++){ for(int j = 0; j <= m; j++){ dp[i][j] = 1e18; } } dp[0][0] = 0; for(int i = 1; i <= n; i++){ for(int j = 1; j <= m; j++){ dp[i][j] = min({dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]}) + abs(r[i - 1] - b[j - 1]); } } return dp[n][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...