Submission #874444

#TimeUsernameProblemLanguageResultExecution timeMemory
874444Maite_MoraleCollecting Stamps 3 (JOI20_ho_t3)C++14
100 / 100
174 ms222060 KiB
#include<bits/stdc++.h> #define F first #define S second #define MAX 205 #define oo 1e18 #define mod 1000000007 #define fast_in ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);cout.setf(ios::fixed);cout.precision(0); using namespace std; typedef long long ll; #define pll pair<ll , ll> #define vll vector<ll> #define vvll vector<vll> #define vpll vector<pll> ll dp[MAX][410][MAX][5],a[410],t[410],n,m; int main(){ fast_in cin>>n>>m;a[n]=m;t[n]=0; for(int i=0;i<n;i++){ cin>>a[i];a[i+n+1]=a[i]+m; } for(int i=0;i<n;i++){ cin>>t[i];t[i+n+1]=t[i]; } for(int k=0;k<=n;k++) for(int i=n;i>=0;i--) for(int j=n;j<=i+n;j++) dp[i][j][k][0]=dp[i][j][k][1]=-1; dp[n][n][0][0]=dp[n][n][0][1]=0; ll r=0; for(int k=0;k<=n;k++){ for(int i=n;i>=0;i--){ for(int j=n;j<=i+n;j++){ if(dp[i][j][k][0]!=-1){ if(j<i+n){ ll x=0,y=dp[i][j][k][0]+abs(a[i]-a[j+1]); if(y<=t[j+1])x++; if(dp[i][j+1][k+x][1]==-1)dp[i][j+1][k+x][1]=y; else dp[i][j+1][k+x][1]=min(dp[i][j+1][k+x][1],y); } if(i>0){ ll x=0,y=dp[i][j][k][0]+abs(a[i]-a[i-1]); if(y<=t[i-1])x++; if(dp[i-1][j][k+x][0]==-1)dp[i-1][j][k+x][0]=y; else dp[i-1][j][k+x][0]=min(dp[i-1][j][k+x][0],y); } } if(dp[i][j][k][1]!=-1){ if(j<i+n){ ll x=0,y=dp[i][j][k][1]+abs(a[j]-a[j+1]); if(y<=t[j+1])x++; if(dp[i][j+1][k+x][1]==-1)dp[i][j+1][k+x][1]=y; else dp[i][j+1][k+x][1]=min(dp[i][j+1][k+x][1],y); } if(i>0){ ll x=0,y=dp[i][j][k][1]+abs(a[j]-a[i-1]); if(y<=t[i-1])x++; if(dp[i-1][j][k+x][0]==-1)dp[i-1][j][k+x][0]=y; else dp[i-1][j][k+x][0]=min(dp[i-1][j][k+x][0],y); } } if(dp[i][j][k][1]!=-1 || dp[i][j][k][0]!=-1)r=k; } } }cout<<r<<" "; 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...