Pagini recente » Cod sursa (job #1642421) | Cod sursa (job #1328850) | Cod sursa (job #1941873) | Cod sursa (job #292618) | Cod sursa (job #1814262)
#include<fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int v[100001], x[100001], n, pred[100001], m;
int caut(int i)
{
int j=0, pas=1<<16;
while(pas!=0)
{
if(v[x[j+pas]]<v[i] && j+pas<=m)
j+=pas;
pas/=2;
}
return j;
}
void funct(int i)
{
if(i==0)
return;
funct(pred[i]);
g<<v[i]<<" ";
}
int main()
{
int i,j;
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
x[++m]=1;
for(i=2;i<=n;i++)
{
j=caut(i);
pred[i] = x[j];
x[j+1] = i;
if(j+1>m)
m++;
}
g<<m<<"\n";
funct(x[m]);
return 0;
}