Cod sursa(job #919399)

Utilizator apopeid13Apopeid Alejandro apopeid13 Data 19 martie 2013 17:09:20
Problema Wanted Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#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);
  
f.close();
g.close();
}