Pagini recente » Cod sursa (job #2632296) | Cod sursa (job #3003280) | Cod sursa (job #2546271) | Cod sursa (job #2707370) | Cod sursa (job #1429371)
#include <iostream>
#include <fstream>
using namespace std;
int n,mic[100001],v[100001],pred[100001],nr;
ifstream in("scmax.in");
ofstream out("scmax.out");
int caut_bin(int x)
{
int i=0, pas=(1<<17);
while(pas!=0)
{
if(i+pas<=nr && v[mic[i+pas]]<x)
i+=pas;
pas>>=1;
}
return i;
}
void subsir(int p)
{
if (pred[p] != 0)
subsir(pred[p]);
out << v[p] << " ";
}
int main()
{
int i,j;
in>>n;
for(i=1;i<=n;i++)
in>>v[i];
nr=0;
mic[++nr] = 1;
for(i=2;i<=n;i++){
j=caut_bin(v[i]);
pred[i] = mic[j];
mic[j+1] = i;
if(j == nr) nr++;
}
out<<nr<<'\n';
subsir(mic[nr]);
return 0;
}