Pagini recente » Cod sursa (job #1041376) | Cod sursa (job #57354) | Cod sursa (job #2825484) | Cod sursa (job #2599760) | Cod sursa (job #165954)
Cod sursa(job #165954)
#include <stdio.h>
#include <algorithm>
using namespace std;
#define minim(a, b) ((a < b) ? a : b)
#define maxim(a, b) ((a > b) ? a : b)
#define INF 1000000001
#define PII pair<int, int>
#define x first
#define y second
int N, D[205][205], bst;
PII v[205];
int modul(int X)
{ return (X < 0 ? -X : X); }
int main(void)
{
int i, j, d, k;
freopen("wanted.in", "r", stdin);
freopen("wanted.out", "w", stdout);
scanf("%d", &N);
for (i = 1; i <= N; ++i)
scanf("%d %d", &v[i].x, &v[i].y);
sort(v+1, v+N+1);
for (d = 2; d <= N; ++d)
{
for (i = 1; i <= N-d+1; ++i)
{
j = i+d-1;
D[i][j] = INF;
for (k = i+1; k <= j; ++k)
D[i][j] = minim(D[i][j], maxim(D[k][i+1], D[k][j]) + v[k].x-v[i].x+v[k].y+v[i].y);
D[j][i] = INF;
for (k = i; k < j; ++k)
D[j][i] = minim(D[j][i], maxim(D[k][j-1], D[k][i]) + v[j].x-v[k].x+v[k].y+v[j].y);
}
}
bst = INF;
for (i = 1; i <= N; ++i)
bst = minim(bst, maxim(D[i][1], D[i][N]) + modul(v[i].x) + v[i].y);
printf("%d\n", bst);
return 0;
}