#include <bits/stdc++.h>
using namespace std;
#define int long long
int32_t main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int n,f;
    cin >> n >> f;
    vector<int> balls(n+2);
    for(int i=1;i<=n;i++)cin>>balls[i];
    sort(balls.begin()+1, balls.begin()+1+n);
    balls[0]=balls[1];
    balls[n+1]=balls[n];
    vector DP(2,vector(n+1,vector(n+1,vector(2,(int)1e15))));
    DP[0][0][0][0]=0;
    DP[0][0][0][1]=balls[n]-balls[1];
    DP[1][0][0][1]=0;
    DP[1][0][0][0]=balls[n]-balls[1];
    for(int start=0;start<2;start++){
        for(int l=0;l<=n;l++) {
            for(int r=0;l+r<=n;r++) {
                if(l==0 and r==0)continue;
                // If end = 0
                if(l==0) {
                    DP[start][l][r][1]=DP[start][l][r-1][1]+(l+r)*(balls[n-r+2]-balls[n-r+1])+1;
                } else if(r==0) {
                    DP[start][l][r][0]=DP[start][l-1][r][0]+(l+r)*(balls[l]-balls[l-1])+1;
                } else {
                    DP[start][l][r][0]=min(DP[start][l-1][r][0]+(l+r)*(balls[l]-balls[l-1])+1,DP[start][l-1][r][1]+(l+r)*(balls[n-r+1]-balls[l])+1);
                    DP[start][l][r][1]=min(DP[start][l][r-1][1]+(l+r)*(balls[n-r+2]-balls[n-r+1])+1,DP[start][l][r-1][0]+(l+r)*(balls[n-r+1]-balls[l])+1);
                    DP[start][l][r][0]=min(DP[start][l][r][0],DP[start][l][r][1]+(l+r+1)*(balls[n-r+1]-balls[l]));
                    DP[start][l][r][1]=min(DP[start][l][r][1],DP[start][l][r][0]+(l+r+1)*(balls[n-r+1]-balls[l]));
                }
            }
        }
    }
    int q;
    cin >> q;
    for(int i=1;i<=q;i++) {
        int s,g,t;
        cin >> s >> g >> t;
        // Answer Query
        int ans = 1e15;
        int l = upper_bound(balls.begin()+1,balls.begin()+1+n,g)-balls.begin()-1;
        if(l!=0) ans = min(ans,DP[0][l][n-l][0]+abs(balls[0]-s)+(n+1)*abs(balls[l]-g));
        if(l!=0) ans = min(ans,DP[1][l][n-l][0]+abs(balls[n+1]-s)+(n+1)*abs(balls[l]-g));
        if(l!=n) ans = min(ans,DP[0][l][n-l][1]+abs(balls[0]-s)+(n+1)*abs(balls[l+1]-g));
        if(l!=n) ans = min(ans,DP[1][l][n-l][1]+abs(balls[n+1]-s)+(n+1)*abs(balls[l+1]-g));
        if(ans<=t)cout<<"Yes\n";
        else cout<<"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... |