版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CSDN___CSDN/article/details/88620362
https://ac.nowcoder.com/acm/contest/547/F
首先将一系列数存入到数组中,然后利用set的upper_bound返回第一个大于他的函数,如果存在这样的,就把大于他的那个数删除,加入这个新的数,否则就表示序列中没有大于他的数,把他加入set中
#include <iostream>
#include <set>
using namespace std;
const int maxn = 100000+5;
int a[maxn];
int main ()
{
int n,i;
cin >> n;
set<int> s;
set<int>::iterator it;
for(i=0;i<n;i++)
cin >> a[i];
for(i=0;i<n;i++)
{
if(s.upper_bound(a[i])!=s.end())
{
it=s.upper_bound(a[i]);
s.erase(it);
s.insert(a[i]);
}
else
{
s.insert(a[i]);
}
}
cout << s.size() << endl;
return 0;
}