Pagini recente » Cod sursa (job #1380036) | Cod sursa (job #2086072) | Cod sursa (job #1543241) | Cod sursa (job #3164374) | Cod sursa (job #1749873)
#include <fstream>
#include <cstdio>
#include <iostream>
#include <vector>
#include <queue>
#include <cstring>
#include <map>
#include <algorithm>
#define pb push_back
#define NMAX 205
#define INF 0x3f3f3f3f
using namespace std;
typedef pair<int, int> pii;
ifstream fin("wanted.in");
ofstream fout("wanted.out");
pii v[NMAX];
int dist[NMAX][NMAX],st[NMAX][NMAX],dr[NMAX][NMAX];
int main() {
int n,i,x,y,s=0,j,k,val;
fin>>n;
for(i=1;i<=n;++i) fin>>v[i].first>>v[i].second;
sort(v+1,v+n+1);
for(i=0;i<=n;++i)
for(j=0;j<=n;++j)
dist[i][j]=abs(v[i].first-v[j].first)+v[i].second+v[j].second;
for(i=1;i<=n;++i) {
dr[i][i]=dist[i][i-1];
st[i][i]=dist[i][i+1];
}
for(i=n-1;i>0;--i) {
for(j=i+1;j<=n;++j) {
st[i][j]=INF;
for(k=i;k<=j;++k)
st[i][j]=min(st[i][j], max(dr[k+1][j]+dist[k][j+1], st[i][k-1]+dist[k][j+1]));
dr[i][j]=INF;
for(k=i;k<=j;++k)
dr[i][j]=min(dr[i][j], max(dr[k+1][j]+dist[k][i-1], st[i][k-1]+dist[k][i-1]));
}
}
fout<<dr[1][n];
return 0;
}