Pagini recente » Cod sursa (job #1132333) | Cod sursa (job #2774356) | Cod sursa (job #2875034) | Cod sursa (job #2831561) | Cod sursa (job #1538118)
#include <fstream>
using namespace std;
long n, a[100003], k, b[100003], m,poz[100003];
ifstream f("scmax.in");
ofstream g("scmax.out");
long caut(long p,long u,long x)
{long m;
while(p<=u)
{m=(p+u)/2;
if(x<a[b[m]]) p=m+1;
else u=m-1;
}
return p;
}
int main()
{ int i;
f>>n;
for(i=1;i<=n;i++)
f>>a[i];
for(i=n;i>=1;i--)
{k=caut(1,m,a[i]);
poz[i]=b[k-1];
if(k>m){b[k]=i;m=k;}
else if(a[i]>a[b[k]]) b[k]=i;
}
g<<m<<endl;
for(i=b[m];i>0;i=poz[i]) g<<a[i]<<' ';
return 0;
}