Pagini recente » Cod sursa (job #3208231) | Cod sursa (job #1848968) | Cod sursa (job #279944) | Cod sursa (job #117979) | Cod sursa (job #2331837)
#include <fstream>
#define NMAX 5002
using namespace std;
ifstream f("subsir2.in");
ofstream g("subsir2.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])
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;
}