Pagini recente » Cod sursa (job #2094669) | Cod sursa (job #2046840) | Cod sursa (job #1262365) | Cod sursa (job #3343220) | Cod sursa (job #3324755)
/*
* author : tenebris
*/
#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
int binarySearch(vector<int> const& d, int x) {
int left = 0, right = d.size() - 1, mid, pos = -1;
while(left <= right)
{
mid = (left + right) / 2;
if(d[mid] > x)
{
pos = mid;
right = mid - 1;
}
else left = mid + 1;
}
return pos;
}
int lengthOfLIS(vector<int>& nums) {
int n = nums.size();
if(n == 0) return 0;
vector<int> d;
d.push_back(nums[0]);
for(int i = 1; i < n; i++)
{
int x = nums[i];
if(x >= d.back())
d.push_back(x);
else
{
int l = binarySearch(d, x);
if(l != -1) d[l] = x;
}
}
return d.size();
}
int main()
{
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n;
fin >> n;
vector<int> a(n);
for(int i = 0; i < n; i++)
fin >> a[i];
fout << lengthOfLIS(a) << "\n";
fin.close();
fout.close();
}