SuitNdtie

MyHearthFlutter

Apr 13th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.55 KB | None | 0 0
  1. #include<stdio.h>
  2. int n;
  3. int arr[3010];
  4. int max(int a,int b){
  5.     return (a > b ? a : b);
  6. }
  7. int dp[3010][2];
  8. int cal(int index,int state){
  9.     int maxa = 1;
  10.     if(dp[index][state])return dp[index][state];
  11.     for(int i=index+1;i<=n;i++){
  12.         if(state == 1 && arr[i] < arr[index])
  13.             maxa = max(maxa,cal(i,0) + 1);
  14.         else if(state == 0 && arr[i] > arr[index])
  15.             maxa = max(maxa,cal(i,1) + 1);
  16.     }
  17.     return dp[index][state] = maxa;
  18. }
  19. int main()
  20. {
  21.     scanf("%d",&n);
  22.     for(int i=1;i<=n;i++)scanf("%d",&arr[i]);
  23.     printf("%d",max(cal(1,1),cal(1,0)));
  24.     return 0;
  25. }
Advertisement
Add Comment
Please, Sign In to add comment