제출 #535706

#제출 시각아이디문제언어결과실행 시간메모리
535706sam571128Collecting Stamps 3 (JOI20_ho_t3)C++17
5 / 100
371 ms346904 KiB
#include <bits/stdc++.h> #define int long long #define fastio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); using namespace std; const int N = 13, T = 205; int dp[1<<N][N][T], x[N], t[N], ans = 0; signed main(){ fastio int n,l; cin >> n >> l; for(int i = 0;i < n;i++){ cin >> x[i]; } for(int i = 0;i < n;i++){ cin >> t[i]; } for(int mask = 0; mask < (1<<n); mask++){ for(int i = 0;i < n;i++){ for(int tt = 0; tt < T;tt++){ dp[mask][i][tt] = -1e18; } } } for(int i = 0;i < n;i++){ int tmp = min(x[i],(0-x[i]+l)%l); dp[(1<<i)][i][tmp] = (tmp <= t[i]); ans = max(ans,dp[(1<<i)][i][tmp]); } for(int mask = 0;mask < (1<<n);mask++){ for(int i = 0;i < n;i++){ if(mask&(1<<i)){ for(int j = 0;j < n;j++){ if(!(mask&(1<<j))){ for(int tt = 0; tt < T; tt++){ int tmp = min((x[j]-x[i]+l)%l,(x[i]-x[j]+l)%l); if(tt+tmp < T){ dp[mask^(1<<j)][j][tt+tmp] = max(dp[mask^(1<<j)][j][tt+tmp],dp[mask][i][tt]+(tt+tmp <= t[j])); ans = max(dp[mask^(1<<j)][j][tt+tmp],ans); } } } } } } } cout << ans << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...