Pagini recente » Cod sursa (job #142159) | Cod sursa (job #1612502) | Cod sursa (job #2732199) | Cod sursa (job #602032) | Cod sursa (job #491412)
Cod sursa(job #491412)
#include <fstream>
using namespace std;
int v[1<<17],a[1<<17],pred[1<<17],n,m;
ifstream in("scmax.in");
ofstream out("scmax.out");
void print(int x)
{
if (!x)
return;
print(pred[x]);
out<<v[x]<<" ";
}
void bs(int x)
{
int i,step=1<<16;
for (i=0;step;step>>=1)
if (i+step<=m && v[a[i+step]]<v[x])
i+=step;
if (i==m)
{
a[++m]=x;
pred[x]=a[i];
return;
}
pred[x]=a[i];
a[i+1]=x;
}
int main()
{
int i;
in>>n;
for (i=1;i<=n;i++)
{
in>>v[i];
bs(i);
}
out<<m<<"\n";
print(a[m]);
return 0;
}