Pagini recente » Cod sursa (job #385631) | Cod sursa (job #165026) | iconcurs12 | Cod sursa (job #2068158) | Cod sursa (job #1204750)
#include <fstream>
using namespace std;
int n,a[100005][2],l[100005],lmax,sol[100005];
int main()
{
ifstream in ("scmax.in");
ofstream out ("scmax.out");
in>>n; lmax=1; a[0][0]=2000000005;
for (int i=1;i<=n;++i)
{
in>>a[i][0];
int st=1,dr=100004;
while (st<dr)
{
int m=(st+dr)/2;
if (a[l[m]][0]<a[i][0]) st=m+1;
if (a[l[m]][0]>=a[i][0]) dr=m;
}
l[st]=i; a[i][1]=l[st-1];
}
int i=0;
while (l[i+1]!=0) ++i;
out<<i<<"\n";
i=l[i];
while (i!=0)
{
++sol[0];
sol[sol[0]]=i;
i=a[i][1];
}
for (int i=sol[0];i>0;--i) out<<a[sol[i]][0]<<" ";
in.close();
out.close();
return 0;
}