Pagini recente » Cod sursa (job #2701674) | Cod sursa (job #589698) | Cod sursa (job #2592424) | Cod sursa (job #2843274) | Cod sursa (job #2232302)
#include <bits/stdc++.h>
#define nmax 100005
using namespace std;
fstream f1("scmax.in", ios::in);
fstream f2("scmax.out", ios::out);
int n, a[nmax], s[nmax], l=0, lung[nmax], nrsol, sol[nmax];
int cauta(int st, int dr, int val)
{
if(st<=dr)
{
int mijl=(st+dr)/2;
if(s[mijl]< val) return cauta( mijl+1, dr, val);
else return cauta(st, mijl-1, val);
}
else return st;
}
int main()
{
int i, poz;
f1>>n;
for(i=1; i<=n; i++)
{
f1>>a[i];
poz=cauta(1, l, a[i]);
s[poz]=a[i];
lung[i]=poz;
if(poz>l) l=poz;
}
f2<<l<<"\n";
for(i=n; (i>=1)&&(l>0); i--)
if(lung[i]==l)
{
nrsol++; sol[nrsol]=a[i];l--;
}
for(i=nrsol; i>=1; i--)
f2<<sol[i]<<' ';
return 0;
}