Pagini recente » Cod sursa (job #2559320) | Cod sursa (job #3163193) | Cod sursa (job #802796) | Cod sursa (job #1725722) | Cod sursa (job #2397677)
#include <bits/stdc++.h>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
const int N=100001;
int n,a[N],b[N],p[N],v[N],lo,hi,mi,lmax;
void print(int);
int main()
{
f>>n;
for(int i=1;i<=n;i++)
{
f>>a[i];
lo=0;
hi=lmax+1;
while(hi-lo>1)
{
mi=(lo+hi)/2;
if(v[mi]<a[i])
lo=mi;
else
hi=mi;
}
b[i]=p[lo];
if(hi==lmax+1||a[i]<v[hi])
{
v[hi]=a[i];
p[hi]=i;
}
if(hi==lmax+1)
lmax++;
}
g<<lmax<<'\n';
print(p[lmax]);
return 0;
}
void print(int i)
{
if(i==0)
return;
print(b[i]);
g<<a[i]<<' ';
}