Pagini recente » Cod sursa (job #1932994) | Cod sursa (job #2600428) | Cod sursa (job #488563) | Cod sursa (job #259992) | Cod sursa (job #2331512)
#include<fstream>
#include<algorithm>
#define x first
#define y second
using namespace std;
ifstream fi("wanted.in");
ofstream fo("wanted.out");
int n,i,j,k,Dp[2][205][205],rez,v1,v2;
pair<int,int> A[205];
int modul(int x)
{
if(x<0)
return -x;
return x;
}
int main()
{
fi>>n;
for(i=1; i<=n; i++)
fi>>A[i].x>>A[i].y;
sort(A+1,A+n+1);
for(i=1; i<=n; i++)
Dp[0][i][i]=Dp[1][i][i]=modul(A[i].y);
for(i=n-1; i>=1; i--)
for(j=i+1; j<=n; j++)
{
Dp[0][i][j]=Dp[1][i][j]=2000000000;
for(k=i; k<=j; k++)
{
if(i==k)
v1=0;
else
v1=1;
if(j==k)
v2=0;
else
v2=1;
Dp[0][i][j]=min(Dp[0][i][j],max(Dp[1][i][k-1]+v1*(A[k].x-A[k-1].x),Dp[0][k+1][j]+v2*(A[k+1].x-A[k].x))+2*modul(A[k].y)+A[k].x-A[i].x);
Dp[1][i][j]=min(Dp[1][i][j],max(Dp[1][i][k-1]+v1*(A[k].x-A[k-1].x),Dp[0][k+1][j]+v2*(A[k+1].x-A[k].x))+2*modul(A[k].y)+A[j].x-A[k].x);
}
}
rez=2000000000;
for(i=1; i<=n; i++)
rez=min(rez,max(Dp[1][1][i-1]+A[i].x-A[i-1].x,Dp[0][i+1][n]+A[i+1].x-A[i].x)+modul(A[i].x)+2*modul(A[i].y));
fo<<rez<<"\n";
fi.close();
fo.close();
return 0;
}