#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, l; cin >> n >> l;
vector<int> a(n);
for(int i = 0; i < n; i++) cin >> a[i];
sort(a.begin(), a.end());
int q; cin >> q;
while(q--){
int s, g, t; cin >> s >> g >> t;
vector<vector<int>> dp(n, vector<int>(n, 1e18));
for(int i = 0; i < n; i++) dp[i][i] = abs(g - a[i]) * (n + 1);
for(int len = 2; len <= n; len++){
for(int i = 0; i + len - 1 < n; i++){
int j = i + len - 1, w = n - len + 2;
dp[i][j] = min(dp[i][j], dp[i + 1][j] + (a[i + 1] - a[i]) * w);
dp[i][j] = min(dp[i][j], dp[j][i + 1] + (a[j] - a[i]) * w);
dp[j][i] = min(dp[j][i], dp[j - 1][i] + (a[j] - a[j - 1]) * w);
dp[j][i] = min(dp[j][i], dp[i][j - 1] + (a[j] - a[i]) * w);
}
}
int res = min(dp[0][n - 1] + abs(s - a[0]), dp[n - 1][0] + abs(s - a[n - 1])) + n;
cout << (res <= t ? "Yes" : "No") << '\n';
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |