Submission #1294121

#TimeUsernameProblemLanguageResultExecution timeMemory
1294121nguyenkhangninh99Marathon Race 2 (JOI24_ho_t3)C++20
100 / 100
138 ms25544 KiB
#include <bits/stdc++.h> using namespace std; #define int long long signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, trash; cin >> n >> trash; vector<int> a(n), len(n); for(int i = 0; i < n; i++) cin >> a[i]; sort(a.begin(), a.end()); int p = 0; for(int i = 0; i < n;){ int j = i + 1; while(j < n && a[j] == a[i]) j++; a[p] = a[i]; len[p] = j - i; i = j; p++; } for(int i = 1; i < p; i++) len[i] += len[i - 1]; if(p > 1000){ int q; cin >> q; while(q--) cout << "No\n"; return 0; } vector<vector<array<int, 2>>> f(1005, vector<array<int, 2>>(1005, array<int, 2>{(int)1e9, (int)1e9})); f[0][p - 1][0] = f[p - 1][0][1] = 0; for(int _ = 0; _ <= 1; _++){ for(int l = p; l >= 2; l--){ for(int i = 0; i + l - 1 < p; i++){ int j = i + l - 1; f[i + 1][j][_] = min(f[i + 1][j][_], f[i][j][_] + (a[i + 1] - a[i]) * (n - (len[j] - len[i]) + 1)); f[j][i + 1][_] = min(f[j][i + 1][_], f[i][j][_] + (a[j] - a[i]) * (n - (len[j] - len[i]) + 1)); f[i][j - 1][_] = min(f[i][j - 1][_], f[j][i][_] + (a[j] - a[i]) * (n - (len[j - 1] - (i ? len[i - 1] : 0)) + 1)); f[j - 1][i][_] = min(f[j - 1][i][_], f[j][i][_] + (a[j] - a[j - 1]) * (n - (len[j - 1] - (i ? len[i - 1] : 0)) + 1)); } } } int q; cin >> q; while(q--){ int s, g, t; cin >> s >> g >> t; int pos = lower_bound(a.begin(), a.begin() + p, g) - a.begin(); int ans = 1e9; for(int i = max(0ll, pos - 1); i <= min(pos + 1, p - 1); i++){ ans = min(ans, f[i][i][0] + abs(a[i] - g) * (n + 1) + abs(a[0] - s)); ans = min(ans, f[i][i][1] + abs(a[i] - g) * (n + 1) + abs(a[p - 1] - s)); } cout << (ans + n <= t ? "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...