Advertisement
Josif_tepe

Untitled

Dec 8th, 2024
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.20 KB | None | 0 0
  1. //{ Driver Code Starts
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4.  
  5. // } Driver Code Ends
  6. class Solution {
  7.     public:
  8.     int dp[100001][2];
  9.     vector<int> arr;
  10. int rec1(int at, bool count){
  11.     if(dp[at][count] != -1){
  12.         return dp[at][count];
  13.     }
  14.     int res = 0;
  15.     for(int i = at + 1; i < arr.size(); i++){
  16.         if(arr[i] < arr[at] && count == true){
  17.             res = max(res, rec1(i, false) + 1);
  18.         }
  19.         if(arr[i] > arr[at] && count == false){
  20.             res = max(res, rec1(i, true) + 1);
  21.         }
  22.     }
  23.    
  24.     return dp[at][count] = res;
  25. }
  26.         int ZigZagMaxLength(vector<int>&nums){
  27.         memset(dp, -1, sizeof dp);
  28.         arr = nums;
  29.         int res = 0;
  30.         for(int i = 0; i < nums.size(); i++) {
  31.             res = max(res, rec1(i, 0) + 1);
  32.             res = max(res, rec1(i, 1) + 1);
  33.            
  34.         }
  35.         return res;
  36.         }
  37.  
  38. };
  39.  
  40. //{ Driver Code Starts.
  41. int main(){
  42.     int tc;
  43.     cin >> tc;
  44.     while(tc--){
  45.         int n;
  46.         cin >> n;
  47.         vector<int>nums(n);
  48.         for(int i = 0; i < n; i++)
  49.             cin >> nums[i];
  50.         Solution obj;
  51.         int ans = obj.ZigZagMaxLength(nums);
  52.         cout << ans << "\n";
  53.    
  54. cout << "~" << "\n";
  55. }
  56.     return 0;
  57. }
  58. // } Driver Code Ends
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement