제출 #1152240

#제출 시각아이디문제언어결과실행 시간메모리
1152240dnnndaMarathon Race 2 (JOI24_ho_t3)C++20
24 / 100
620 ms156992 KiB
#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 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...