이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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... |