Pagini recente » Cod sursa (job #1687026) | Cod sursa (job #678410) | Cod sursa (job #1134627) | Cod sursa (job #1654775) | Cod sursa (job #3161385)
#include<fstream>
#include<algorithm>
using namespace std;
pair<int,int> a[220];
long long b[220][220][2];
int n;
long long div(int st,int dr,int tata) {
int i, semn;
if(tata < st)
semn = 1;
else semn = 0;
if(b[st][dr][semn] < ((1LL<<40)) && b[st][dr][semn])
return b[st][dr][semn];
if(st > dr)
return 0;
b[st][dr][semn] = 1LL << 40;
for(i = st; i <= dr; i++) {
b[st][dr][semn] = min(max(div(st, i - 1, i), div(i + 1, dr, i) ) + a[i].second + a[tata].second + max(a[tata].first - a[i].first, -a[tata].first + a[i].first), b[st][dr][semn]);
}
return b[st][dr][semn];
}
int main()
{
int i;
ifstream f("wanted.in");
ofstream g("wanted.out");
f >> n;
for(i = 1; i <= n; i++)
f >> a[i].first >> a[i].second;
sort( a + 1, a + n + 1);
g << div(1, n, 0);
return 0;
}