Pagini recente » Cod sursa (job #94040) | Cod sursa (job #1757396) | Cod sursa (job #696370) | Cod sursa (job #701769) | Cod sursa (job #2605945)
#include <bits/stdc++.h>
#define inf 1000000000
using namespace std;
ifstream fin("wanted.in");
ofstream fout("wanted.out");
int n;
int dp[205][205][2];
struct point
{
int x,y;
};
point v[205];
bool cmp(point a,point b)
{
return a.x<b.x;
}
int solve(int st,int dr,int dir)
{
if(st>dr)return 0;
if(dp[st][dr][dir]==inf)
{
for(int i=st;i<=dr;i++)
{
int val=max(solve(st,i-1,1),solve(i+1,dr,0));
if(dir==0)
{
dp[st][dr][0]=min(dp[st][dr][0],val+abs(v[i].x-v[st-1].x)+v[i].y+v[st-1].y);
}
else
{
dp[st][dr][1]=min(dp[st][dr][1],val+abs(v[i].x-v[dr+1].x)+v[i].y+v[dr+1].y);
}
}
}
return dp[st][dr][dir];
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>v[i].x>>v[i].y;
}
sort(v+1,v+n+1,cmp);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
dp[i][j][0]=dp[i][j][1]=inf;
}
}
fout<<solve(1,n,0);
}