Pagini recente » Cod sursa (job #2066977) | Cod sursa (job #2240074) | Cod sursa (job #677648) | Cod sursa (job #2465896) | Cod sursa (job #821784)
Cod sursa(job #821784)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("scmax.in");
ofstream out("scmax.out");
int const N=100005;
int v[N],ult[N],pred[N],n,u;
int cautb (int x)
{
int poz=0;
for(int i=1<<30;i>0;i>>=1)
if((poz+i<=u)&&(v[ult[i+poz]]<x))
poz+=i;
return poz;
}
int main()
{
in>>n;
for(int i=1;i<=n;i++)
{
in>>v[i];
int p = cautb(v[i]);
ult[p+1]=i;
if(p==u) u++;
}
out<<u<<"\n";
for(int i=1;i<=u;i++)
out<<v[ult[i]]<<" ";
out<<"\n";
return 0;
}