Submission #254628

#TimeUsernameProblemLanguageResultExecution timeMemory
254628HeheheWiring (IOI17_wiring)C++14
0 / 100
1 ms256 KiB
#include<bits/stdc++.h> //:3 using namespace std; typedef long long ll; #define all(a) (a).begin(), (a).end() #define ff first #define ss second #define pb push_back #define mp make_pair #define rc(s) return cout<<s,0 #define pi pair <int, int> #define sz(x) (int)((x).size()) #include "wiring.h" const int N = 2e3 + 11; ll dp[N][N]; ll min_total_length(vector<int> r, vector<int> b){ vector<ll>red, blue; red.push_back(0); blue.push_back(0); for(auto it : r)red.push_back((ll)it); for(auto it : b)blue.push_back((ll)it); if(sz(r) <= 200 && sz(b) <= 200){ return 0; memset(dp, 0x3f, sizeof(dp)); dp[0][0] = 0; for(int i = 1; i < sz(red); i++){ for(int j = 1; j < sz(blue); j++){ dp[i][j] = min({dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]}) + abs(red[i] - blue[j]); } } return dp[sz(red) - 1][sz(blue) - 1]; } ll ans = 0; for(int i = 1; i < sz(red); i++){ ans += (red[sz(red) - 1] - red[i]); } for(int i = 1; i < sz(blue); i++){ ans += (blue[i] - blue[1]); } ans += max(sz(r), sz(b))*(blue[0] - red[sz(r)]); return ans; }
#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...