This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include "wiring.h"
//#include "grader.cpp"
using namespace std ;
const int MAX = 210 ;
long long dp[MAX][MAX][2] ;
int n , m ;
vector<int>A , B ;
long long solve(int idx , int idx2 , bool flag)
{
if(idx == n)
{
if(idx2 != m)
return 1e18 ;
else
return 0 ;
}
long long &ret = dp[idx][idx2][flag] ;
if(ret != -1)
return ret ;
ret = 1e18 ;
if(flag)
ret = solve(idx+1 , idx2 , 0) ;
if(idx2 != m)
ret = min(ret , solve(idx , idx2 + 1 , 1) + abs(A[idx] - B[idx2])) ;
if(idx2 != 0)
ret = min(ret , solve(idx , idx2 , 1) + abs(A[idx] - B[idx2-1])) ;
return ret ;
}
long long min_total_length(std::vector<int> r, std::vector<int> b)
{
memset(dp , -1 , sizeof(dp)) ;
A = r , B = b ;
n = A.size() , m = B.size() ;
return solve(0 , 0 , 0) ;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |