Pagini recente » Cod sursa (job #1200437) | Cod sursa (job #333628) | Cod sursa (job #1144652) | Cod sursa (job #1079336) | Cod sursa (job #938265)
Cod sursa(job #938265)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("wanted.in"); ofstream fout("wanted.out");
pair <int, int> a[300];
int n;
long long b[300][300][2];
long long Div(int st ,int dr, int tata)
{
int 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(int 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()
{
fin >> n;
for(int i = 1; i <= n; i++)
fin >> a[i].first >> a[i].second;
sort(a + 1, a + n + 1);
fout << div(1, n, 0);
fin.close(); fout.close();
return 0;
}