제출 #71913

#제출 시각아이디문제언어결과실행 시간메모리
71913XmtosXShortcut (IOI16_shortcut)C++17
0 / 100
4 ms612 KiB
#include <bits/stdc++.h>
#include "shortcut.h"
using namespace std;
const int N=502;
long long dis[N][N],mx[N][N],mx1[N][N];
long long find_shortcut(int n, vector<int> l, vector<int> d, int c)
{
    if (n>500)
        return 0;
    for (int i=0;i<n;i++)
        mx[i][i]=mx1[i][i]=d[i];
    for (int i=0;i<n;i++)
    {
        for (int j=i+1;j<n;j++)
        {
            dis[i][j]=dis[i][j-1]+l[j-1];
            mx[i][j]=max(mx[i][j-1],dis[i][j]+d[j]);
        }
    }
    for (int i=0;i<n;i++)
    {
        for (int j=i-1;j>=0;j--)
        {
            mx1[j][i]=max(mx1[j+1][i],dis[j][i]+d[j]);
        }
    }
    long long ans=1e18;
    for (int i=0;i<n;i++)
    {
        for (int j=i+1;j<n;j++)
        {
            long long maxx=0;
            for (int q=0;q<n;q++)
            {
                long long cur=0;
                if (q<=j)
                    cur= d[q]+mx[j][n-1]+(min(dis[q][j],dis[i][q]+c));
                if (q>=i)
                    cur= max(cur,d[q]+mx1[0][i]+min(dis[i][q],dis[q][j]+c));
               
                maxx=max(maxx,cur);
            }
            ans=min(ans,maxx);
        }
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...