Pagini recente » Cod sursa (job #1164584) | Cod sursa (job #214185) | Cod sursa (job #1516449) | Cod sursa (job #1094072) | Cod sursa (job #480115)
Cod sursa(job #480115)
#include <stdio.h>
#include <algorithm>
using namespace std;
#define INF 2000000007
#define minim(a,b) (a<b ? a : b)
#define maxim(a,b) (a>b ? a : b)
#define modul(a) (a<0 ? -a : a)
int a[205][205],b[205][205];
int solm=INF,n;
struct point
{
int x,y;
};
point v[202];
int cmp(const point& a,const point& b)
{
return a.x<b.x;
}
int main ()
{
int i,j,k,al,d;
int sol,dist;
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,cmp);
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
a[i][j]=b[i][j]=INF;
for(d=1;d<=n;d++)
for(i=1,j=i+d-1;j<=n;i++ && j++)
for(k=i;k<=j;k++)
{
al=maxim(a[k+1][j],b[i][k-1]);
dist=v[i-1].y+v[k].x-v[i-1].x+v[k].y;
a[i][j]=minim(a[i][j],al+dist);
dist=v[k].y+v[j+1].x-v[k].x+v[j+1].y;
b[i][j]=minim(b[i][j],al+dist);
}
for(i=1;i<=n;i++)
{
sol=maxim(b[1][i-1],a[i+1][n]);
dist=v[i].y+modul(v[i].x);
solm=minim(solm,sol+dist);
}
printf("%d\n",solm);
return 0;
}