Pagini recente » Cod sursa (job #1724814) | Cod sursa (job #1178728) | Cod sursa (job #397175) | Istoria paginii utilizator/dinamovistul | Cod sursa (job #2006185)
#include <fstream>
#define dim 100001
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int A[dim],Prec[dim],M[dim];
void afisare(int q){
if (Prec[q])
afisare(Prec[q]);
g<<A[q]<<" ";
}
int main()
{
int i,N,st,dr,mij,k=0,poz;
f>>N;
for(i=1;i<=N;++i)
{
f>>A[i];
st=1;
dr=k;
while(st<=dr)
{
mij=(st+dr)/2;
if(A[i]>A[M[mij]])
st=mij+1;
else
dr=mij-1;
}
M[st]=i;
Prec[i]=M[st-1];
if(st>=k)
{
k=st;
poz=i;
}
}
g<<k<<'\n';
//afisam elementele
for(i=1;i<=k;++i)
g<<A[M[i]]<<' ';
//afisare(poz);
g<<'\n';
return 0;
}