Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.94 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. int arr [ 1000 + 100 ] ;
  5. int dp [ 1100 ] [ 3 ] ;
  6. int n ;
  7. int solve ( int idx , int flag ){
  8. if ( idx >= ( n + 1 ) ) return 0 ;
  9. if ( dp [ idx ] [ flag ] != -1 ) return dp [ idx ] [ flag ] ;
  10. int x = 0 , y = 0 , p = 1e9 ;
  11. if ( flag == 1 && idx == n ){
  12. return 0 ;
  13. }
  14.  
  15. if( idx == 1 ) {
  16. x = arr [ idx ] + solve ( idx + 2 , 1 );
  17. }
  18. else x = arr [ idx ] + solve( idx + 2 , 0 );
  19. y = solve ( idx+ 1 , 0 );
  20. ///cout << x <<" "<<y << endl;
  21. return dp [ idx ] [ flag ] = max( x , y );
  22.  
  23.  
  24. }
  25. int main()
  26. {
  27. int t , l =1 ;
  28. scanf("%d",&t);
  29. while ( t -- ){
  30. memset(&dp,-1,sizeof ( dp ));
  31. scanf("%d",&n);
  32. for ( int i = 1 ; i <= n ; i ++ ){
  33. scanf("%d", &arr [ i ] );
  34. }
  35. // for ( int i = 1; i<= n ; i ++ )cout << arr[ i ]<<" ";
  36. int ans = solve( 1 , 0 ) ;
  37. printf("Case %d: %d\n",l++,ans);
  38.  
  39.  
  40.  
  41. }
  42. return 0;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement