Pagini recente » Cod sursa (job #332637) | Cod sursa (job #2638833) | Cod sursa (job #1584235) | Cod sursa (job #1322931) | Cod sursa (job #490390)
Cod sursa(job #490390)
#include <algorithm>
using namespace std;
#define INF 0x3f3f3f3f
#define sc second
#define fs first
#define DIM 205
#define DOWN 0
#define UP 1
pair <int,int> v[DIM];
int bst[2][DIM][DIM];
int n,sol;
void read ()
{
int i;
scanf ("%d",&n);
for (i=1; i<=n; ++i)
scanf ("%d%d",&v[i].fs,&v[i].sc);
}
void solve ()
{
int i,j,k,lg;
sort (v+1,v+n+1);
v[0].fs=-INF; v[n+1].sc=INF;
for (lg=1; lg<=n; ++lg)
for (i=1; i+lg-1<=n; ++i)
{
j=i+lg-1;
bst[DOWN][i][j]=bst[UP][i][j]=INF;
for (k=i; k<=j; ++k)
{
bst[DOWN][i][j]=min (bst[DOWN][i][j],max (bst[UP][i][k-1],bst[DOWN][k+1][j])+v[i-1].sc+v[k].fs-v[i-1].fs+v[k].sc);
bst[UP][i][j]=min (bst[UP][i][j],max (bst[UP][i][k-1],bst[DOWN][k+1][j])+v[j+1].sc+v[j+1].fs-v[k].fs+v[k].sc);
}
}
sol=INF;
for (i=1; i<=n; ++i)
sol=min (sol,max (bst[UP][1][i-1],bst[DOWN][i+1][n])+v[i].sc+abs (v[i].fs));
printf ("%d",sol);
}
int main ()
{
freopen ("wanted.in","r",stdin);
freopen ("wanted.out","w",stdout);
read ();
solve ();
return 0;
}