Pagini recente » Cod sursa (job #1263881) | Cod sursa (job #1319294) | Cod sursa (job #1598595) | Cod sursa (job #166381) | Cod sursa (job #1744955)
#include <fstream>
#include <algorithm>
#define x first
#define y second
using namespace std;
ifstream cin("wanted.in");
ofstream cout("wanted.out");
const int MAXN = 210;
const int INF = 2000000000;
int Abs(int x) {
if (x < 0)
return -x;
return x;
}
pair<int, int> v[MAXN];
int dp[2][MAXN][MAXN];
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++)
cin >> v[i].x >> v[i].y;
sort(v + 1, v + n + 1);
for (int l = 1; l <= n; l++)
for (int i = 1; i + l - 1 <= n; i++) {
int j = i + l - 1;
dp[0][i][j] = dp[1][i][j] = INF;
for (int k = i; k <= j; k++) {
dp[0][i][j] = min(dp[0][i][j], Abs(v[k].x - v[i - 1].x) + Abs(v[k].y) + Abs(v[i - 1].y) + max(dp[1][i][k - 1], dp[0][k + 1][j]));
if (j != n)
dp[1][i][j] = min(dp[1][i][j], Abs(v[k].x - v[j + 1].x) + Abs(v[j].y) + Abs(v[j + 1].y) + max(dp[1][i][k - 1], dp[0][k + 1][j]));
}
}
cout << dp[0][1][n];
return 0;
}