Submission #724603

#TimeUsernameProblemLanguageResultExecution timeMemory
724603vjudge1Collecting Stamps 3 (JOI20_ho_t3)C++17
5 / 100
1 ms596 KiB
#include <bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; const int MAXN = 1e5+10; const ll INF = 0x3f3f3f3f3f3f3f3f; int n; vector<ll> arr, tempo; int dp[205][405]; int calc(int i, int at, ll curr, int nxd, int nxu){ if(i==n) return 0; if(dp[i][at]!=-1) return dp[i][at]; int ret=0; if(tempo[nxd]>=curr+abs(arr[at]-arr[nxd])) ret=1+calc(i+1, nxd, curr+abs(arr[at]-arr[nxd]), nxd-1, nxu); else ret=calc(i+1, nxd, curr+abs(arr[at]-arr[nxd]), nxd-1, nxu); if(tempo[nxu]>=curr+abs(arr[nxu]-arr[at])) ret=max(ret, 1+calc(i+1, nxu, curr+abs(arr[nxu]-arr[at]), nxd, nxu+1)); else ret=max(ret, calc(i+1, nxu, curr+abs(arr[nxu]-arr[at]), nxd, nxu+1)); return dp[i][at]=ret; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); // freopen("shuffle.in","r",stdin); // freopen("shuffle.out","w",stdout); ll l; cin >> n >> l; for(int i=0;i<n;i++){ ll x; cin >> x; arr.pb(x); } arr.pb(l); for(int i=0;i<n;i++) arr.pb(arr[i]+l); tempo.resize(2*n+1); for(int i=0;i<n;i++) cin >> tempo[i]; for(int i=0;i<n;i++) tempo[i+n+1]=tempo[i]; tempo[n]=-1; memset(dp, -1, sizeof dp); cout << calc(0, n, 0ll, n-1, n+1) << "\n"; 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...