This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define ll long long
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pb push_back
using namespace std;
ll n,m,k,i,j,ans,a[25],t[25],d[25][25][25][25];
ll check(int l, int r, int pos, int cnt){
if(cnt==0)return 1e14;
if(l>r)return -1e14;
if(d[l][r][pos][cnt]!=-1)return d[l][r][pos][cnt];
ll ans=-1e14;
int lc;
if(pos==0) lc=l-1;
else lc=r+1;
ans=max(ans,check(l+1,r,0,cnt)-(min(abs(a[l]-a[lc]),m-abs(a[l]-a[lc]))));
ans=max(ans,check(l,r-1,1,cnt)-(min(abs(a[r]-a[lc]),m-abs(a[r]-a[lc]))));
ans=max(ans,min(t[l],check(l+1,r,0,cnt-1))-(min(abs(a[l]-a[lc]),m-abs(a[l]-a[lc]))));
ans=max(ans,min(t[r],check(l,r-1,1,cnt-1))-(min(abs(a[r]-a[lc]),m-abs(a[r]-a[lc]))));
d[l][r][pos][cnt]=ans;
return ans;
}
int main() {
cin>>n>>m;
for(k=0; k<n; k++)cin>>a[k];
for(k=0; k<n; k++)cin>>t[k];
memset(d,-1,sizeof d);
ll fans=0;
for(k=0; k<=n; k++) {
if(check(0,n-1,1,k)>=0)fans=k;}
cout<<fans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |