Submission #1213867

#TimeUsernameProblemLanguageResultExecution timeMemory
1213867Hamed_GhaffariCollecting Stamps 3 (JOI20_ho_t3)C++20
100 / 100
98 ms128584 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define mins(a, b) (a = min(a, b)) const int MXN = 203; const ll inf = 1e12; int n, L, X[MXN], T[MXN]; ll dp[MXN][MXN][MXN][2]; int32_t main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); cin >> n >> L; for(int i=1; i<=n; i++) cin >> X[i]; X[n+1] = L; for(int i=1; i<=n; i++) cin >> T[i]; for(int i=0; i<=n; i++) for(int j=0; i+j<=n; j++) for(int k=0; k<=i+j; k++) dp[k][i][j][0] = dp[k][i][j][1] = inf; dp[0][0][0][0] = 0; for(int cnt=0; cnt<n; cnt++) for(int i=0,j=cnt; i<=cnt; i++, j--) for(int k=0; k<=cnt; k++) { mins(dp[k + (dp[k][i][j][0]+X[i+1]-X[i]<=T[i+1])][i+1][j][0], dp[k][i][j][0]+X[i+1]-X[i]); mins(dp[k + (dp[k][i][j][1]+X[i+1]+L-X[n+1-j]<=T[i+1])][i+1][j][0], dp[k][i][j][1]+X[i+1]+L-X[n+1-j]); mins(dp[k + (dp[k][i][j][0]+X[i]+L-X[n-j]<=T[n-j])][i][j+1][1], dp[k][i][j][0]+X[i]+L-X[n-j]); mins(dp[k + (dp[k][i][j][1]+X[n+1-j]-X[n-j]<=T[n-j])][i][j+1][1], dp[k][i][j][1]+X[n+1-j]-X[n-j]); } for(int k=n; k>=0; k--) for(int cnt=k; cnt<=n; cnt++) for(int i=0,j=cnt; i<=cnt; i++, j--) for(int t : {0, 1}) if(dp[k][i][j][t]<inf) { cout << k << '\n'; return 0; } 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...