Dsxv

Untitled

Apr 13th, 2020
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.73 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std ;
  3.  
  4. #define int long long
  5. const int N = 2e3 + 10 ;
  6. int dp[N][201][4] ;
  7. int n ;
  8. 1
  9. int solve(int* a , int i = 0 , int j = 0 , int k = 0){
  10.     if(k > 3) return INT_MIN ;
  11.     if(i == n){
  12.         if(k == 3){
  13.             return 0 ;
  14.         } else {
  15.             return INT_MIN ;
  16.         }
  17.     }
  18.     if(~dp[i][j][k]) return dp[i][j][k] ;
  19.     int ans = 0 ;
  20.     if(a[i] != j){
  21.         ans = max(solve(a,i+1,a[i],k+1) + 1 , solve(a,i+1,j,k)) ;
  22.     } else {
  23.         ans = solve(a,i+1,a[i],k) + 1 ;
  24.     }
  25.     return dp[i][j][k] = ans ;
  26. }
  27.  
  28. int32_t main(){
  29.     int t ;
  30.     cin >> t ;
  31.     while(t--){
  32.         memset(dp,-1,sizeof(dp)) ;
  33.         int n ;
  34.         cin >> n ;
  35.         int a[n] ;
  36.         for(int i = 0 ; i < n ; i++) cin >> a[i] ;
  37.         cout << max(solve(a),0LL) << '\n' ;
  38.     }
  39.     return 0 ;
  40. }
Add Comment
Please, Sign In to add comment