Submission #1051325

#TimeUsernameProblemLanguageResultExecution timeMemory
1051325pawnedWiring (IOI17_wiring)C++17
0 / 100
1 ms348 KiB
#pragma GCC optimize("O1,O2,O3,Ofast,unroll-loops") #include <bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back typedef long long ll; typedef pair<ll, ll> ii; typedef vector<ll> vi; #include "wiring.h" ll min_total_length(vector<int> r_g, vector<int> b_g) { vi r, b; for (int x : r_g) r.pb(x); for (int x : b_g) b.pb(x); int N = r.size(); int M = b.size(); map<int, ll> dp; // dp[i][j]: min cost to connect first i red (exclusive) // with first j blue (exclusive) dp[0] = 0; for (int i = 1; i <= N; i++) { map<int, ll> newdp; for (int j = 1; j <= M; j++) { newdp[j] = 1e18; if (newdp.find(j - 1) != dp.end()) newdp[j] = min(newdp[j], newdp[j - 1] + abs(r[i - 1] - b[j - 1])); if (dp.find(j) != dp.end()) newdp[j] = min(newdp[j], dp[j] + abs(r[i - 1] - b[j - 1])); if (dp.find(j - 1) != dp.end()) newdp[j] = min(newdp[j], dp[j - 1] + abs(r[i - 1] - b[j - 1])); } dp = newdp; } return dp[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...