Submission #1266206

#TimeUsernameProblemLanguageResultExecution timeMemory
1266206flashmtMarathon Race 2 (JOI24_ho_t3)C++20
62 / 100
1596 ms16184 KiB
#include <bits/stdc++.h> #ifdef LOCAL #include "Debug.h" #else #define debug(...) 42 #endif using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, l; cin >> n >> l; if (n > 2000) return 0; vector<int> a(n); for (int &x : a) cin >> x; sort(begin(a), end(a)); auto isGood = [&](int from, int to, int oo) { vector<vector<int>> f(n, vector<int>(n, oo)); for (int i = 0; i < n; i++) f[i][i] = min(abs(to - a[i]) * (n + 1), oo); for (int len = 2; len <= n; len++) for (int i = 0; i + len <= n; i++) { int j = i + len - 1, weight = n - (len - 1) + 1; f[i][j] = min(f[i][j], f[i + 1][j] + (a[i + 1] - a[i]) * weight); f[i][j] = min(f[i][j], f[j][i + 1] + (a[j] - a[i]) * weight); f[j][i] = min(f[j][i], f[j - 1][i] + (a[j] - a[j - 1]) * weight); f[j][i] = min(f[j][i], f[i][j - 1] + (a[j] - a[i]) * weight); } int res = min(f[0][n - 1] + abs(from - a[0]), f[n - 1][0] + abs(from - a[n - 1])) + n; return res < oo; }; int q; cin >> q; while (q--) { int s, g, t; cin >> s >> g >> t; cout << (isGood(s, g, t + 1) ? "Yes" : "No") << '\n'; } }
#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...