Pagini recente » Cod sursa (job #2678658) | Cod sursa (job #1527651) | Cod sursa (job #27827) | Cod sursa (job #2772675) | Cod sursa (job #1814272)
#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 val)
{
int j=0, pas=1<<16;
while(pas!=0)
{
if(v[x[j+pas]]<val && j+pas<=m)
j+=pas;
pas/=2;
}
return j;
}
void funct(int i)
{
if(pred[i]>0)
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(v[i]);
pred[i] = x[j];
x[j+1] = i;
if(j+1>m)
m++;
}
g<<m<<"\n";
funct(x[m]);
return 0;
}