Pagini recente » Cod sursa (job #402256) | Cod sursa (job #443792) | Cod sursa (job #407197) | Cod sursa (job #584889) | Cod sursa (job #721680)
Cod sursa(job #721680)
#include <fstream>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
const int N=100005;
int x[N],v[N],pred[N],sol[N];
int bs(int val,int n)
{
int i,pas=1<<16;
for (i=0;pas!=0;pas>>=1)
if (i+pas<=n && v[x[i+pas]]<val)
i+=pas;
return i+1;
}
void write(int i)
{
if(i==0)
return;
write(pred[i]);
out<<v[i]<<" ";
}
int main()
{
int n,i,nr,j;
in>>n;
for(i=1;i<=n;i++)
in>>v[i];
nr=1;
x[1]=1;
for(i=2;i<=n;i++)
{
j=bs(v[i],nr);
if(j>nr)
nr++;
x[j]=i;
pred[i]=x[j-1];
}
out<<nr<<"\n";
write(x[nr]);
return 0;
}