Pagini recente » Cod sursa (job #3161495) | Cod sursa (job #677605) | Cod sursa (job #416978) | Cod sursa (job #2675094) | Cod sursa (job #2327934)
#include <fstream>
#define NMAX 100002
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int v[NMAX],p[NMAX],q[NMAX],n,lg;
void citire()
{
int i;
f>>n;
for(i=1;i<=n;i++) f>>v[i];
}
int Insert(int k, int st, int dr)
{
int mij=(st+dr)/2;
if(st==dr)
{
if(st>lg)
++lg;
q[st]=k;
return st;
}
else
if(k<q[mij]) return Insert(k,st,mij);
else return Insert(k,mij+1,dr);
}
void buildPQ()
{
int i;
for(i=1;i<=n;i++)
p[i]=Insert(v[i],1,lg+1);
}
void afis(int i, int lg)
{
if(i)
{
if(p[i]==lg)
afis(i-1,lg-1), g<<v[i]<<" ";
else
afis(i-1,lg);
}
}
int main()
{
citire();
buildPQ();
g<<lg<<endl;
afis(n,lg);
return 0;
}