제출 #429982

#제출 시각아이디문제언어결과실행 시간메모리
429982Rouge_Hugo휴가 (IOI14_holiday)C++14
0 / 100
24 ms1196 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=30; 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=max(d(x-1,y-2,z)+a[x],u); 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=max(d(x+1,y-1,z),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; u=a[x]; if(z==0) { u=max(d1(x+1,y-2,z)+a[x],u); 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=max(d1(x-1,y-1,z),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<10;i++) { for(int j=0;j<10;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<10;i++) { for(int j=0;j<10;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...