Submission #254616

#TimeUsernameProblemLanguageResultExecution timeMemory
254616HeheheWiring (IOI17_wiring)C++14
7 / 100
38 ms32000 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<int>red, blue; red.push_back(0); blue.push_back(0); for(auto it : r)red.push_back(it); for(auto it : b)blue.push_back(it); if(sz(r) <= 200 && sz(b) <= 200){ 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]; } int ans = 0; if(sz(r) <= sz(b)){ int point = red[sz(red) - 1]; for(auto it : blue){ ans += abs(it - point); } for(int i = 1; i < sz(red) - 1; i++){ ans += abs(red[i] - point); } }else{ int point = blue[1]; for(auto it : red){ ans += abs(it - point); } for(int i = 1; i < sz(blue); i++){ ans += abs(blue[i] - point); } } 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...