Submission #444465

#TimeUsernameProblemLanguageResultExecution timeMemory
444465fuad27Global Warming (CEOI18_glo)C++14
10 / 100
101 ms1968 KiB
#include <iostream>
#include <vector>
using namespace std;
int CeilIndex(vector<int>& v, int l, int r, int key)
{
	while (r - l > 1) {
		int m = l + (r - l) / 2;
		if (v[m] >= key)
			r = m;
		else
			l = m;
	}

	return r;
}

int lis(vector<int>& v)
{
	if (v.size() == 0)
		return 0;
	vector<int> tail(v.size(), 0);
	int length = 1; 
	tail[0] = v[0];
	for (size_t i = 1; i < v.size(); i++) {

		if (v[i] < tail[0])
			tail[0] = v[i];
		else if (v[i] > tail[length - 1])
			tail[length++] = v[i];
		else
			tail[CeilIndex(tail, -1, length - 1, v[i])] = v[i];
	}

	return length;
}

int main()
{	
	int n, x;
	cin >> n >> x;
	vector<int> v;
	for(int i = 0;i<n;i++) {
		int p;
		cin >> p;
		v.push_back(p);
	}
	cout<<lis(v)<<endl;
	return 0;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...