Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std ;
- #define int long long
- const int N = 2e3 + 10 ;
- int dp[N][201][4] ;
- int n ;
- 1
- int solve(int* a , int i = 0 , int j = 0 , int k = 0){
- if(k > 3) return INT_MIN ;
- if(i == n){
- if(k == 3){
- return 0 ;
- } else {
- return INT_MIN ;
- }
- }
- if(~dp[i][j][k]) return dp[i][j][k] ;
- int ans = 0 ;
- if(a[i] != j){
- ans = max(solve(a,i+1,a[i],k+1) + 1 , solve(a,i+1,j,k)) ;
- } else {
- ans = solve(a,i+1,a[i],k) + 1 ;
- }
- return dp[i][j][k] = ans ;
- }
- int32_t main(){
- int t ;
- cin >> t ;
- while(t--){
- memset(dp,-1,sizeof(dp)) ;
- int n ;
- cin >> n ;
- int a[n] ;
- for(int i = 0 ; i < n ; i++) cin >> a[i] ;
- cout << max(solve(a),0LL) << '\n' ;
- }
- return 0 ;
- }
Add Comment
Please, Sign In to add comment