Pagini recente » Cod sursa (job #1804779) | Cod sursa (job #1334664) | Cod sursa (job #739854) | Cod sursa (job #3244987) | Cod sursa (job #750456)
Cod sursa(job #750456)
#include <fstream>
#define inf 99999999
using namespace std;
ifstream f ("scmax.in");
ofstream g ("scmax.out");
int a[1000],Q[1000],p[1000],mx,pz,l,u,n,i;
int cb (int x,int Q[],int st,int dr)
{
int mij,pz;
pz=0;
while (st<=dr && !pz)
{
mij=(st+dr)/2;
if (Q[mij]==x) pz=mij;
else
if (Q[mij]>x) dr=mij-1;
else st=mij+1;
}
if (!pz)
{
pz=st;
if (st>l) l++;
}
Q[pz]=x;
return pz;
}
void scriere (int u,int i,int lg)
{
if (i>0)
{
if (a[i]<u && p[i]==lg)
{
scriere (a[i],i-1,lg-1);
g<<a[i]<<' ';
}
else scriere (u
,i-1,lg);
}
}
int main ()
{
f>>n;
for (i=1; i<=n; i++)
f >>a[i];
l=1; Q[1]=a[1];
for (i=2; i<=n; i++)
{
p[i]=cb(a[i],Q,1,l);
if (l>mx)
{
mx=l;
pz=i;
}
}
u=inf;
scriere (u,pz,mx);
return 0;
}