Submission #932383

#TimeUsernameProblemLanguageResultExecution timeMemory
932383salmonShortcut (IOI16_shortcut)C++14
0 / 100
1 ms600 KiB
#include "shortcut.h" #include <bits/stdc++.h> using namespace std; queue<pair<int,int>> q; long long int d[1100100]; long long find_shortcut(int N, vector<int> l, vector<int> d1, int c){ if(N == 1){ return d[0]; } long long int small = 1e18; for(int i = 0; i < N; i++){ for(int j = i + 1; j < N; j++){ long long int big = 0; for(int k = 0; k < N; k++){ for(int i = 0; i < N; i++){ d[i] = 1e18; } q.push({0,k}); d[k] = 0; while(!q.empty()){ if(d[q.front().second] == q.front().first){ int m = q.front().second; if(m == j){ if(d[m] + c < d[i]){ d[i] = d[m] + c; q.push({d[i],i}); } } else if(m == i){ if(d[m] + c < d[j]){ d[j] = d[m] + c; q.push({d[j],j}); } } if(m != N - 1){ if(d[m + 1] > d[m] + l[m]){ d[m + 1] = d[m] + l[m]; q.push({d[m + 1], m + 1}); } } if(m != 0){ if(d[m - 1] > d[m] + l[m - 1]){ d[m - 1] = d[m] + l[m - 1]; q.push({d[m - 1], m - 1}); } } } q.pop(); } for(int i = 0; i < N; i++){ if(i != k) big = max(big,(long long int)d[i] + d1[i] + d1[k]); } } small = min(small,big); } } return small; }
#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...