Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int arr [ 1000 + 100 ] ;
- int dp [ 1100 ] [ 3 ] ;
- int n ;
- int solve ( int idx , int flag ){
- if ( idx >= ( n + 1 ) ) return 0 ;
- if ( dp [ idx ] [ flag ] != -1 ) return dp [ idx ] [ flag ] ;
- int x = 0 , y = 0 , p = 1e9 ;
- if ( flag == 1 && idx == n ){
- return 0 ;
- }
- if( idx == 1 ) {
- x = arr [ idx ] + solve ( idx + 2 , 1 );
- }
- else x = arr [ idx ] + solve( idx + 2 , 0 );
- y = solve ( idx+ 1 , 0 );
- ///cout << x <<" "<<y << endl;
- return dp [ idx ] [ flag ] = max( x , y );
- }
- int main()
- {
- int t , l =1 ;
- scanf("%d",&t);
- while ( t -- ){
- memset(&dp,-1,sizeof ( dp ));
- scanf("%d",&n);
- for ( int i = 1 ; i <= n ; i ++ ){
- scanf("%d", &arr [ i ] );
- }
- // for ( int i = 1; i<= n ; i ++ )cout << arr[ i ]<<" ";
- int ans = solve( 1 , 0 ) ;
- printf("Case %d: %d\n",l++,ans);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement