Pagini recente » Cod sursa (job #1564283) | Cod sursa (job #455141) | Cod sursa (job #383256) | Monitorul de evaluare | Cod sursa (job #1214322)
#include<cstdio>
#include<algorithm>
#include<set>
using namespace std;
const int NMAX = 100000+5;
const int INF = (1LL<<31)-1;
void Read(),Solve(),Print();
int N,Best;
int V[NMAX];
multiset<int> LIS;
multiset<int>::iterator it;
int main()
{
Read();
Solve();
Print();
return 0;
}
void Read()
{
int i;
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&N);
for(i = 1; i <= N; i++)
scanf("%d",&V[i]);
}
void Solve()
{
int i;
for(i = 1; i <= N; i++)
{
LIS.insert(V[i]);
it = LIS.lower_bound(V[i]);
it++;
if(it != LIS.end()) LIS.erase(it);
}
}
void Print()
{
printf("%d\n",LIS.size());
for(it = LIS.begin(); it != LIS.end(); it++)
printf("%d ",*it);
}