#include <bits/stdc++.h>
using namespace std;
int a[200001];
int n,m;
int main() {
	cin >> n >> m;
	
	vector<int> a={};
	for(int i=0; i<n; i++){
		int b;cin>>b;
		a.push_back(b);
	}
	//cout<<"in";
	vector<int> dp,ind;
	int j=0;
	for (int k=0; k<n; k++) {
		//cout<<k<<" "<<a[k]<<endl;
		int i=a[k];
		//cout<<i<<endl;
		int pos = lower_bound(dp.begin(), dp.end(), i) - dp.begin();
		if (pos == dp.size()) {
			dp.push_back(i);
			ind.push_back(j++);
		} else {
			dp[pos] = i;
			ind[pos]=j++;
		}
	}
//	if(!is)return dp.size();
	int b=0;
	////b=find_lis(false);
	//return dp.size()+2;
	cout<<dp.size()+2;
		
}
 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |