제출 #282447

#제출 시각아이디문제언어결과실행 시간메모리
282447MohamedAhmed04Wiring (IOI17_wiring)C++14
7 / 100
37 ms5368 KiB
#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 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...