Pagini recente » Cod sursa (job #1587970) | Cod sursa (job #2341825) | Cod sursa (job #1106944) | Cod sursa (job #2279358) | Cod sursa (job #1540179)
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
long mx,p,n,v[100005],i,poz[100005],ant[100005];
void rec(long nod)
{
if (ant[nod]!=0)
rec(poz[ant[nod]]);
g<<v[nod]<<' ';
}
int main()
{
f>>n;
for (i=1;i<=n;i++)
f>>v[i];
for (i=1;i<=n;i++)
{
long j;
for (j=1;j<=mx;j<<=1);
j>>=1;
for (p=0;j>0;j>>=1)
if (v[poz[p+j]]<v[i] && p+j<=mx)
p=p+j;
if (poz[p+1]==0 || v[poz[p+1]]>v[i])
{
if (poz[p+1]==0)
mx=p+1;
poz[p+1]=i;
}
ant[i]=p;
}
g<<mx<<'\n';
rec(poz[mx]);
return 0;
}