This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "shortcut.h"
#include<bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
using namespace std;
typedef long long ll;
const int N=12;
const ll inf=1e18;
int n;
ll c;
ll w[N],d[N];
ll dp[N][N];
ll ans=inf;
ll calc(int x,int y){
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)dp[i][j]=inf;
for(int i=1;i<=n;i++)dp[i][i]=0;
for(int i=1;i<n;i++)dp[i][i+1]=dp[i+1][i]=w[i];
dp[x][y]=dp[y][x]=min(dp[x][y],c);
for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
ll res=0;
for(int i=1;i<=n;i++)for(int j=1;j<i;j++)res=max(res,dp[i][j]+d[i]+d[j]);
return res;
}
long long find_shortcut(int _n, vector<int> _w, vector<int> _d, int _c){
n=_n,c=_c;
for(int i=0;i<n-1;i++)w[i+1]=_w[i];
for(int i=0;i<n;i++)d[i+1]=_d[i];
for(int i=1;i<=n;i++)for(int j=i+1;j<=n;j++)ans=min(ans,calc(i,j));
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |