Cod sursa(job #2717081)

Utilizator PredescuSebastianIonPredescu Sebastian Ion PredescuSebastianIon Data 6 martie 2021 12:08:29
Problema Wanted Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <bits/stdc++.h>
#define inf 1000000000

using namespace std;
ifstream f("wanted.in");
ofstream g("wanted.out");
struct ceva
{
    int x,y;
} v[205];
int n,dp[205][205][2];
bool cmp(ceva a,ceva b)
{
    return a.x<b.x;
}
int solve(int st,int dr,int dir)
{
    if(st>dr)return 0;
    if(dp[st][dr][dir]==inf)
    {
        for(int i=st;i<=dr;i++)
        {
            int val=max(solve(st,i-1,1),solve(i+1,dr,0));
            if(dir==0)
            {
                dp[st][dr][0]=min(dp[st][dr][0],val+abs(v[i].x-v[st-1].x)+v[i].y+v[st-1].y);
            }
            else
            {
                dp[st][dr][1]=min(dp[st][dr][1],val+abs(v[i].x-v[dr+1].x)+v[i].y+v[dr+1].y);
            }
        }
    }
    return dp[st][dr][dir];
}
int main()
{
    f>>n;
    for(int i=1;i<=n;i++)
    {
        f>>v[i].x>>v[i].y;
    }
    sort(v+1,v+n+1,cmp);
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            dp[i][j][0]=dp[i][j][1]=inf;
        }
    }
    g<<solve(1,n,0)<<'\n';
    return 0;
}