Pagini recente » Cod sursa (job #3241613) | Cod sursa (job #2043073) | Cod sursa (job #616958) | Cod sursa (job #567226) | Cod sursa (job #1819253)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("wanted.in");
ofstream fout("wanted.out");
#define MAX 201
#define Inf (1U << 31) - 1
int n;
pair<int, int> p[MAX];
int d[MAX][MAX][2];
int abs(int x)
{
if (x > 0)return x;
else return -x;
}
int solve(int l, int r, int s)
{
if (l > r) return 0;
int st;
if (s)st = p[r + 1].first;
else st = p[l - 1].first;
if (l == r) return abs(st - p[l].first) + abs(p[l].second);
if (!d[l][r][s])
{
int b = Inf;
for (int i = l; i <= r; ++i)
b = min(b, abs(st - p[i].first) + 2 * abs(p[i].second) + max(solve(l, i - 1, 1), solve(i + 1, r, 0)));
d[l][r][s] = b;
}
return d[l][r][s];
}
int main()
{
fin >> n;
for (int i = 0; i < n; ++i)
fin >> p[i].first >> p[i].second;
sort(p, p + n);
int x = Inf;
for (int i = 0; i < n; ++i)
x = min(x, abs(p[i].first) + 2 * abs(p[i].second) + max(solve(0, i - 1, 1), solve(i + 1, n - 1, 0)));
fout << x << "\n";
return 0;
}