CCCPaste

Untitled

#include 
using namespace std;
const int INF = 2e9;
const int maxn = 2002;
vector> v;
int dp[maxn];
int rec(int at) {
  if(dp[at] != -1) {
    return dp[at];
  }
  int res = 1;
  for(int i = at + 1; i < v.size(); i++) {
    if(v[at].second <= v[i].second) {
      res = max(res, rec(i) + 1);
    }
  }
  return dp[at] = res;
}
int main()
{
  ios_base::sync_with_stdio(false);
  int t;
  cin >> t;
  while(t--) {
    v.clear();
    int n;
    cin >> n; 
    vector a(n), b(n);
    for(int i = 0; i < n; i++) {
      cin >> a[i];
    }
    for(int i = 0; i < n; i++) {
      cin >> b[i];
      v.push_back(make_pair(a[i], b[i]));
    }
    sort(v.begin(), v.end());
    memset(dp, -1, sizeof dp);
    int res = 0;
    for(int i = 0; i < n; i++) {
      res = max(res, rec(i));
    }
    cout << res << endl;
  }  
  
    return 0;
}