fork(1) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. int N; cin>>N;
  6. int arr[N];
  7. for (int i=0; i<=N-1; i++) cin>>arr[i];
  8.  
  9. int dp[N][3];
  10.  
  11. // dp[i][0]=max money on day i s.t he charges on day i,i-1
  12. // dp[i][1]=max money on day i s.t he charges on day i,i-2
  13. // dp[i][2]=max money on day i s.t he charges on day i,i-3
  14.  
  15. dp[0][0] = arr[0]; dp[1][1]=arr[1];
  16. dp[1][0] = arr[0]+arr[1]; //second day
  17. dp[2][0] = arr[1]+arr[2]; dp[2][1] = arr[0]+arr[2]; dp[2][2] = 0;
  18.  
  19. for (int i=3; i<N; ++i) {
  20. dp[i][0] = arr[i] + max(dp[i-1][1],dp[i-1][2]);
  21. dp[i][1] = arr[i] + max(dp[i-2][0],dp[i-2][1]);
  22. dp[i][2] = arr[i] + dp[i-3][0];
  23. }
  24.  
  25. cout<<max(max(dp[N-1][0],dp[N-1][1]),dp[N-1][2])<<endl;
  26.  
  27. /*for (int i=0; i<=N-1; i++)
  28.   {
  29.   for (int j=0; j<=2; ++j)
  30.   cout<<dp[i][j] << " ";
  31.   cout<<endl;
  32.   }*/
  33. }
  34.  
  35. /*1 2 3 4 5 6 7 8 9.... i-5 i-4 i-3 i-2 i-1 i i+1 i+2 i+3 ..... N*/
  36.  
Success #stdin #stdout 0s 15456KB
stdin
Standard input is empty
stdout
317959015