#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define ff first
#define ss second
#define all(s) s.begin(),s.end()
#define rall(s) s.rbegin(),s.rend()
void chmin(ll &a,ll b){a=min(a,b);}
void chmax(ll &a,ll b){a=max(a,b);}
int main(){
    ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    ll n,L;
    cin>>n>>L;
    ll x[n+5];
    for(ll i=1;i<=n;i++){
        cin>>x[i];
    }
    sort(x+1,x+n+1);
    vector<ll>v,u;
    for(ll i=1;i<=n;i++){
        v.pb(x[i]);
        u.pb(x[i]);
    }
    reverse(all(u));
    ll dp[2][n+5][n+5][2];
    for(ll k=0;k<2;k++){
        for(ll i=0;i<=n;i++){
            for(ll j=0;j<=n;j++){
                dp[k][i][j][0]=dp[k][i][j][1]=(ll)1e18;
            }
        }
        if(k==0) dp[k][1][0][0]=0;
        else dp[k][0][1][1]=0;
        for(ll i=0;i<=(ll)v.size();i++){
            for(ll j=0;j<=(ll)u.size();j++){
                if(i<(ll)v.size()){
                    ll pos=(i==0?v[i]:v[i-1]);
                    chmin(dp[k][i+1][j][0],dp[k][i][j][0]+abs(v[i]-pos)*(i+j+1));
                    pos=(j==0?u[j]:u[j-1]);
                    chmin(dp[k][i+1][j][0],dp[k][i][j][1]+abs(v[i]-pos)*(i+j+1));
                }
                if(j<(ll)u.size()){
                    ll pos=(i==0?v[i]:v[i-1]);
                    chmin(dp[k][i][j+1][1],dp[k][i][j][0]+abs(u[j]-pos)*(i+j+1));
                    pos=(j==0?u[j]:u[j-1]);
                    chmin(dp[k][i][j+1][1],dp[k][i][j][1]+abs(u[j]-pos)*(i+j+1));
                }
            }
        }
    }
    ll q;
    cin>>q;
    while(q--){
        ll s,g,t;
        cin>>s>>g>>t;
        ll L=upper_bound(x+1,x+n+1,g)-x-1;//# of left is l
        ll R=n-L;
        //k=0 start from left, k=1 start from right
        ll ans=(ll)1e18;
        if(L>0) chmin(ans,dp[0][L][R][0]+abs(s-x[1])+abs(g-x[L])*(n+1));
        if(R>0) chmin(ans,dp[1][L][R][1]+abs(s-x[n])+abs(g-x[L+1])*(n+1));
        if(L>0&&R>0){
            chmin(ans,dp[0][L][R][1]+abs(s-x[1])+abs(g-x[L+1])*(n+1));
            chmin(ans,dp[1][L][R][0]+abs(s-x[n])+abs(g-x[L])*(n+1));
        }
        //add N
        ans+=n;
        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... |