Submission #1325997

#TimeUsernameProblemLanguageResultExecution timeMemory
1325997zyntherixMarathon Race 2 (JOI24_ho_t3)C++20
24 / 100
164 ms2856 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define pi pair<int, int> #define vi vector<int> #define vs vector<string> #define vb vector<bool> #define vpi vector<pi> #define pb push_back #define all(a) (a).begin(), (a).end() const int inf = 3e18; void solve() { int n, l; cin >> n >> l; vi x(n); for (int i = 0; i < n; i++) cin >> x[i]; int q; cin >> q; while (q--) { int s, e, t; cin >> s >> e >> t; vector<vi> dp((1ll << n), vi(n, inf)); for (int i = 0; i < n; i++) { dp[(1ll << i)][i] = abs(s - x[i]) + 1; } for (int mask = 1; mask < (1ll << n); mask++) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (j == i) continue; // if j is not in mask, continue if (!((1ll << j) & mask)) continue; if (!(mask & (1 << i))) continue; // if dp[mask - not visited prev position][j] doesn't exist, continue if (dp[mask - (1ll << i)][j] == inf) continue; int k = __builtin_popcount(mask); // this has the extra +1 dp[mask][i] = min(dp[mask][i], dp[mask - (1ll << i)][j] + (k * abs(x[i] - x[j])) + 1); } } } int ans = inf; for (int i = 0; i < n; i++) { ans = min(ans, dp[(1ll << n) - 1][i] + ((n + 1) * abs(x[i] - e))); } cout << (ans <= t ? "Yes\n" : "No\n"); } } signed main() { ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); int t = 1; // cin >> t; while (t--) { solve(); } return 0; }
#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...