Pagini recente » Cod sursa (job #1030261) | Cod sursa (job #134475) | Cod sursa (job #1003008) | Cod sursa (job #1247898) | Cod sursa (job #2036568)
#include <iostream>
#include <fstream>
using namespace std;
int v[100010],a[100010],b[100010],p[100010],i,j,n,m,bst,mij,L,lo,hi;
ifstream f("scmax.in");
ofstream g("Scmax.out");
void afisare(int k)
{
if(k==0)
{
g<<L<<'\n';
return;
}
afisare(b[k]);
g<<a[k]<<' ';
}
int main()
{
f>>n;
for(i=1;i<=n;i++)
{
f>>a[i];
lo=0;
hi=L+1;
while(hi-lo>1)
{
mij=(lo+hi)/2;
if(v[mij]<a[i])
lo=mij;
else
hi=mij;
}
if(hi==L+1)
L++;
v[hi]=a[i];
p[hi]=i;
b[i]=p[lo];
}
afisare(p[L]);
}