#include<bits/stdc++.h>
//#include<bits/extc++.h>
using namespace std;
//using namespace __gnu_pbds;
#define S second
#define F first
#define ll long long
//#pragma GCC optimize("Ofast, unroll-loop")
//#pragma GCC target("avx,avx2")
#pragma GCC optimize("O3")
const int inf=0x3f3f3f3f;
const ll inff=0x3f3f3f3f3f3f3f3f;
const int X=1000000007;
int x[20];
ll dp[1000006][20];
signed main(){
ios::sync_with_stdio(false), cin.tie(nullptr);
int n, l; cin >> n >> l;
if(n>20) return 0;
for(int i=1 ; i<=n ;i ++) cin >> x[i];
n++;
int q; cin >> q;
while(q--){
memset(dp,0x3f,sizeof dp);
ll ans=inff;
int s, g, t; cin >> s >> g >> t;
x[0]=s;
dp[1][0]=0;
for(int i=1 ; i<(1<<n) ; i++) for(int j=0 ; j<n ; j++){
vector<int> v;
int w=__builtin_popcount(i);
for(int k=0 ; k<n ; k++) if((i&(1<<k))==0) v.push_back(k);
for(int k:v){
dp[i|(1<<k)][k]=min(dp[i|(1<<k)][k],dp[i][j]+1LL*w*abs(x[j]-x[k]));
}
}
for(int j=1 ; j<n ; j++) ans=min(ans,dp[(1<<n)-1][j]+n*abs(x[j]-g));
//cout << ans+n-1 << '\n';
cout << (ans+n-1<=t ? "Yes\n" : "No\n");
}
return 0;
}
# | 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... |