Pagini recente » Cod sursa (job #2874359) | Cod sursa (job #1029020) | Cod sursa (job #168483) | Cod sursa (job #1500957) | Cod sursa (job #1131492)
#include <fstream>
using namespace std;
int a[100],i,j,m,n,poz[100],v[100],nmax;
ifstream f("scmax.in");
ofstream g("scmax.out");
int cautare(int x,int st,int dr)
{int mmax=0,imax=0;
while (st<=dr)
{if (x<v[(st+dr)/2]) dr=(st+dr)/2-1;
else {if (v[(st+dr)/2]>mmax){mmax=v[(st+dr)/2];
imax=(st+dr)/2;}
st=(st+dr)/2+1;
}
}
return imax;
}
int main()
{f>>n;
for (i=1;i<=n;i++) f>>a[i];
poz[1]=1;
v[1]=a[1];
nmax=1;
for (i=2;i<=n;i++)
{m=cautare(a[i],1,nmax);
v[m+1]=a[i];
poz[i]=m+1;
if (m+1>nmax) nmax=m+1;
}
int w=0;
for (i=1;i<=n;i++)
if (poz[i]>w) w=poz[i];
g<<w;
g<<'\n';
for (i=1;i<=nmax;i++) g<<v[i]<<" ";
g<<'\n';
}