제출 #558748

#제출 시각아이디문제언어결과실행 시간메모리
558748elazarkorenShortcut (IOI16_shortcut)C++17
23 / 100
2082 ms336 KiB
#include "shortcut.h" #include <bits/stdc++.h> #define x first #define y second #define all(v) v.begin(), v.end() #define chkmin(a, b) a = min(a, b) #define chkmax(a, b) a = max(a, b) using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<vi> vvi; typedef pair<int, int> pii; typedef vector<pii> vii; const int MAX_N = 1e6 + 5; const ll infinity = 1e18; ll prefix[MAX_N]; inline ll Dist(int l, int r) { if (l > r) swap(l, r); return prefix[r] - prefix[l]; } ll find_shortcut(int n, vi l, vi d, int c) { for (int i = 1; i < n; i++) prefix[i] = prefix[i - 1] + l[i - 1]; ll ans = infinity; for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { ll curr = 0; for (int a = 0; a < n; a++) { for (int b = a + 1; b < n; b++) { ll x = min({Dist(a, b), min(Dist(a, i), Dist(a, j)) + min(Dist(b, i), Dist(b, j)) + c}); chkmax(curr, x + d[a] + d[b]); } } chkmin(ans, curr); } } 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...