#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int INF = INT_MAX / 2; int longestIncreasingSubsequence(const vector& a) { int n = a.size(); vector dp(n, INT_MAX); for(int i=0; i::iterator it = upper_bound(dp.begin(), dp.end(), a[i]); *it = a[i]; } return lower_bound(dp.begin(), dp.end(), INT_MAX) - dp.begin(); } int solve(const vector& a) { int n = a.size(); vector b(n+1, 0); for(int i=0; i> n; vector a(n); for(int i=0; i> a[i]; cout << solve(a) << endl; return 0; }