Pagini recente » Cod sursa (job #1724092) | Cod sursa (job #2484678) | Cod sursa (job #711337) | Cod sursa (job #1261212) | Cod sursa (job #1498706)
#include <fstream>
#include <algorithm>
#include <limits.h>
#define nMax 202
using namespace std;
ifstream fin("wanted.in");
ofstream fout("wanted.out");
int dp[2][nMax][nMax], n, i, Min, len, j, k;
struct Car
{
int x;
int y;
}v[nMax];
int cmp(Car o, Car p)
{
return o.x<p.x;
}
int dist(int a, int b)
{
if(a>n||b>n)
return 0;
return abs(v[a].x-v[b].x)+v[a].y+v[b].y;
}
int main()
{
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i].x>>v[i].y;
sort(v+1, v+n+1, cmp);
for(i=1;i<=n;i++)
{
dp[0][i][i]=dist(i, i-1);
dp[1][i][i]=dist(i, i+1);
}
for(i=n-1;i>=1;i--)
for(j=i+1;j<=n;j++)
{
Min=INT_MAX;
for(k=i;k<=j;k++)
{
len=max(dp[0][k+1][j], dp[1][i][k-1])+dist(j+1, k);
Min=min(Min, len);
}
dp[1][i][j]=Min;
Min=INT_MAX;
for(k=i;k<=j;k++)
{
len=max(dp[0][k+1][j], dp[1][i][k-1])+dist(i-1, k);
Min=min(Min, len);
}
dp[0][i][j]=Min;
}
fout<<dp[0][1][n];
return 0;
}