#include #include //#include using namespace std; int n; int ar[100005]; int ar_2[100005]; int dp[100005][2]; int rec(int pos, int side){ if(pos==n){ return 0; } if(dp[pos][side]!= -1){ return dp[pos][side]; } int result=0; if(pos + 1 < n) { if(side==0){ if(ar[pos]<=ar[pos+1]){ result=max(result, rec(pos+1, 0) + 1) ; } if(ar[pos]<=ar_2[pos+1]){ result=max(result, rec(pos+1, 1) + 1); } } if(side==1){ if(ar_2[pos]<=ar_2[pos+1]){ result=max(result, rec(pos+1, 1) + 1); } if(ar_2[pos]<=ar[pos+1]){ result=max(result, rec(pos+1, 0) + 1); } } } return dp[pos][side]=result; } int main() { ios_base::sync_with_stdio(false); cin>>n; for(int i=0; i>ar[i]; } for(int i=0; i>ar_2[i]; } multisetm; memset(dp, -1, sizeof dp); for(int i=0; i