#include <bits/stdc++.h>
#include "wiring.h"
using namespace std;
#define int long long
vector< vector< int > > memo;
int dp(int n, int m, vector< int > red, vector< int > blue){
if(n < 0 || m < 0){
return INT_MAX;
}
if(n == 0 && m == 0){
return memo[n][m] = abs(red[n]-blue[m]);
}
if(memo[n][m] != -1) return memo[n][m];
return memo[n][m] = min(dp(n-1, m-1, red, blue), min(dp(n-1,m,red, blue), dp(n,m-1,red,blue))) + abs(red[n]-blue[m]);
}
#undef int
long long min_total_length (vector <int> red, vector <int> blue) {
#define int long long
int n = red.size();
int m = blue.size();
if(n < 500 && m < 500){
memo.resize(n, vector<int>(m));
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
memo[i][j] = -1;
}
}
return dp(n-1,m-1,red,blue);
}
int tot = 0;
int f = 0;
int s = 0;
while(f < n && s < m){
tot += blue[s]-red[f];
s++;
f++;
}
while(f < n){
tot += blue[0]-red[f];
f++;
}
while(s < m){
tot += blue[s]-red.back();
s++;
}
return tot;
}
/*
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
int n, m;
cin >> n >> m;
vector< int > red(n);
vector< int > blue(m);
for(int i = 0; i < n; i++){
cin >> red[i];
}
for(int i = 0; i < m; i++){
cin >> blue[i];
}
cout << min_total_length(red, blue) << endl;
}*/
Compilation message
wiring.cpp: In function 'long long int min_total_length(std::vector<int>, std::vector<int>)':
wiring.cpp:44:29: error: could not convert 'red' from 'std::vector<int>' to 'std::vector<long long int>'
return dp(n-1,m-1,red,blue);
^