제출 #786834

#제출 시각아이디문제언어결과실행 시간메모리
786834mindiyakShortcut (IOI16_shortcut)C++14
0 / 100
1 ms304 KiB
#include "shortcut.h" #include <iostream> #include <algorithm> using namespace std; long long find_shortcut(int n, std::vector<int> l, std::vector<int> d, int c) { vector<int>S(n,0); for(int i=0;i<n-1;i++){ S[i+1] = S[i] + l[i]; } vector<int>depth(n,0); vector<int>start(n,0); vector<pair<int,pair<int,int>>> diameters; depth[0] = d[0]; for(int i=1;i<n;i++){ depth[i] = max(l[i-1]+depth[i-1],d[i]); if(S[i] < d[i]){ start[i] = i; } else{ start[i] = start[i-1]; } diameters.push_back({l[i-1]+depth[i-1]+d[i],{start[i-1],i}}); } sort(diameters.rbegin(),diameters.rend()); int max_diameter = diameters[0].first - (S[diameters[0].second.second] - S[diameters[0].second.first]) + c; max_diameter = max(max_diameter,diameters[1].first); return max_diameter; }
#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...