Submission #1036356

#TimeUsernameProblemLanguageResultExecution timeMemory
1036356beaconmcWiring (IOI17_wiring)C++14
0 / 100
176 ms66232 KiB
#include "wiring.h"
#include <bits/stdc++.h>

typedef long long ll;
#define FOR(i,x,y) for(ll i=x; i<y; i++)
#define FORNEG(i,x,y) for(ll i=x; i>y; i--)

using namespace std;


ll n,m;
vector<ll> R,B;
unordered_map<ll, ll> cache;

ll dp(ll x, ll y){
	if (abs(x-y) > 6) return 1000000000000000;
	if (cache.count(x*1000000+y)) return cache[x*1000000+y];
	if (x==n && y==m) return 0;
	if (x>=n || y >= m) return 1000000000000000;

	return cache[x*1000000+y] = min(dp(x+1,y), min(dp(x,y+1), dp(x+1,y+1))) + abs(R[x] - B[y]);
}

long long min_total_length(std::vector<int> r, std::vector<int> b) {
	R.clear();
	B.clear();
	cache.clear();
	for (auto&i : r) R.push_back(i);
	for (auto&i : b) B.push_back(i);
	n = r.size();
	m = b.size();
	return dp(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...