Submission #1224795

#TimeUsernameProblemLanguageResultExecution timeMemory
1224795boclobanchatCollecting Stamps 3 (JOI20_ho_t3)C++20
100 / 100
57 ms67164 KiB
#include<bits/stdc++.h> using namespace std; const int MAXN=205; const long long INF=1e18; long long dp[MAXN][MAXN][MAXN][2],A[MAXN],val[MAXN]; void minimize(long long& a,long long b) { if(a>b) a=b; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,k,ans=0; cin>>n>>k; A[n+1]=k; for(int i=1;i<=n;i++) cin>>A[i]; for(int i=1;i<=n;i++) cin>>val[i]; for(int i=0;i<=n+1;i++) for(int j=i;j<=n+1;j++) for(int k=0;k<=n+1;k++) dp[i][j][k][0]=dp[i][j][k][1]=INF; dp[0][n+1][0][0]=0; for(int i=n;i;i--) for(int l=0;l+i<=n+1;l++) { int r=l+i; for(int p=0;p<=n;p++) { if(l) { minimize(dp[l][r][p+(dp[l-1][r][p][0]+A[l]-A[l-1]<=val[l])][0],dp[l-1][r][p][0]+A[l]-A[l-1]); minimize(dp[l][r][p+(dp[l-1][r][p][1]+A[l]+k-A[r]<=val[l])][0],dp[l-1][r][p][1]+A[l]+k-A[r]); } if(r<=n) { minimize(dp[l][r][p+(dp[l][r+1][p][0]+A[l]+k-A[r]<=val[r])][1],dp[l][r+1][p][0]+A[l]+k-A[r]); minimize(dp[l][r][p+(dp[l][r+1][p][1]+A[r+1]-A[r]<=val[r])][1],dp[l][r+1][p][1]+A[r+1]-A[r]); } } for(int p=0;p<=n;p++) if(min(dp[l][r][p][0],dp[l][r][p][1])<INF) ans=max(ans,p); } cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...