Pagini recente » Cod sursa (job #1702555) | Cod sursa (job #299283) | Cod sursa (job #2229322) | Cod sursa (job #2278157) | Cod sursa (job #754118)
Cod sursa(job #754118)
#include <fstream>
using namespace std;
int a[100000],q[100000],p[100000],i,j,n,mx,mij,st,dr,l,pz,k,v[100000],poz;
int main()
{
ifstream f("scmax.in");
ofstream g("scmax.out");
f>>n;
for (i=1; i<=n; i++) f>>a[i];
q[1]=a[1];
l=1;p[1]=1;
for (i=2; i<=n; i++)
{
st=1;
dr=l;
pz=0;
while (st<= dr && pz==0 )
{
mij=(st+dr)/2;
if (q[mij]==a[i] ) pz=mij;
else if (q[mij]>a[i]) dr=mij-1;
else st=mij+1;
}
if (pz==0) pz=st;
q[pz]=a[i];
if (st>l) l=st;
p[i]=pz;
if (p[i]>mx) mx=p[i];
}
g<<mx<<'\n';
for (i=1; i<=n; i++) if (p[i]==mx) poz=i;
k=1;
v[1]=a[poz];
l=p[poz];
for (i=poz-1; i>=1; i--) if (p[i]==l-1)
{
l--;
k++;
v[k]=a[i];
}
for (i=k; i>=1; i--) g<<v[i]<<" ";
f.close();
g.close();
return 0;
}