Submission #430004

#TimeUsernameProblemLanguageResultExecution timeMemory
430004Rouge_HugoHoliday (IOI14_holiday)C++14
7 / 100
16 ms3040 KiB
#include<bits/stdc++.h> #include"holiday.h" #define ll long long #define fi first #define se second #define pb push_back using namespace std; const int M=300; ll INF=-1e9; ll dp[M][M][2],a[M]; int n,s; ll d(int x,int y,int z) { if(y<0)return INF; if(x==-1||x==n)return 0; if(y==0)return 0; ll &u=dp[x][y][z]; if(u!=-1)return u; u=a[x]; if(z==0) { u=d(x-1,y-2,z)+a[x]; u=max(d(x-1,y-1,z),u); u=max(u,d(s+1,y-(s-x),1)); u=max(u,d(s+1,y-(s-x)-1,1)+a[x]); return u; } u=d(x+1,y-1,z); u=max(u,d(x+1,y-2,z)+a[x]); return u; } ll d1(int x,int y,int z) { if(y<0)return INF; if(x==-1||x==n)return 0; if(y==0)return 0; ll &u=dp[x][y][z]; if(u!=-1)return u; if(z==0) { u=d1(x+1,y-2,z)+a[x]; u=max(d1(x+1,y-1,z),u); u=max(u,d1(s-1,y-abs(s-x),1)); u=max(u,d1(s-1,y-abs(s-x)-1,1)+a[x]); return u; } u=d1(x-1,y-1,z); u=max(u,d1(x-1,y-2,z)+a[x]); return u; } long long findMaxAttraction(int N, int start, int D, int A[]) { for(int i=0;i<200;i++) { for(int j=0;j<210;j++) { dp[i][j][0]=-1; dp[i][j][1]=-1; } } s=start; n=N; for(int i=0;i<n;i++) { a[i]=A[i]; } ll u= d(start,D,0); //memset(dp,-1,sizeof dp); for(int i=0;i<210;i++) { for(int j=0;j<210;j++) { dp[i][j][0]=-1; dp[i][j][1]=-1; } } u=max(u,d1(start,D,0)); return u; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...