Pagini recente » Cod sursa (job #1097267) | Cod sursa (job #1109074) | Cod sursa (job #2276161) | Cod sursa (job #2692166) | Cod sursa (job #2146296)
#include <fstream>
using namespace std;
int x[100010],M[100010],k,mid,p[100010],i,j,l,r,n,L;
int main()
{
ifstream fin("scmax.in");
ofstream fout("scmax.out");
fin>>n;
for (i=1;i<=n;i++)
{
fin>>x[i];
l=1;
r=L;
while (l<=r)
{
mid=(l+r)/2;
if (x[M[mid]]<x[i]) l=mid+1; else r=mid-1;
}
M[l]=i;
p[i]=M[l-1];
if (l>L) L=l;
}
fout<<L<<"\n";
k=M[L];
for (i=1;i<=L;i++)
{
M[i]=x[k];
k=p[k];
}
for (i=L;i>=1;i--)
fout<<M[i]<<" ";
return 0;
}