Cod sursa(job #1722524)

Utilizator caprariuapCaprariu Alin-Paul caprariuap Data 28 iunie 2016 12:27:57
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>

using namespace std;

ifstream fin("scmax.in");
ofstream fout("scmax.out");

int n,a[100010],best[100010],p[100010],l[100010],i,j,poz,nr,k,maxim;

void afisare(int x);
int cb(int x)
{int p,u,m;
p=0;
u=nr;
m=(p+u)/2;
while (p<=u)
{if (v[l[m]]<x&&v[l[m+1]]>=x) return m;
else if (v[l[m+1]]<x) p=m+1,m=(p+u)/2;
else u=m-1,m=(p+u)/2;
}
}
int main()
{int pozmax=0;
fin>>n;
for (i=1; i<=n; i++) fin>>a[i];
nr=1;
best[1]=l[1]=1;
for (i=2; i<=n; i++)
{poz=cb(a[i]);
p[i]=l[poz];
best[i]=poz+1;
if (nr<poz+1) nr=poz+1;
if (maxim<best[i])
    maxim=best[i],pozmax=i;
}
fout<<maxim<<'\n';
afisare(pozmax);
}
afisare(int x)
{if (p[x]>0)
afisare(p[x]);
fout<<a[i]<<' ';
}