Pagini recente » Cod sursa (job #34290) | Cod sursa (job #2571342) | Cod sursa (job #2924450) | Cod sursa (job #1338711) | Cod sursa (job #2033291)
#include <fstream>
using namespace std;
ifstream fi ("scmax.in");
ofstream fo ("scmax.out");
int v[100005],poz[100005],x[100005],st,dr,i,nrel,mij,loc,lmax,it,nrsol;
int sol[100005];
int main()
{
fi>>nrel;
v[0]=-1;
poz[0]=-1;
for (i=1;i<=nrel;i++) v[i]=2000000006;
for (i=1;i<=nrel;i++) fi>>x[i];
for (i=1;i<=nrel;i++)
{
st=0;dr=nrel;
while (st<=dr)
{
mij=(st+dr)/2;
if (x[i]<=v[mij]) {dr=mij-1;loc=mij;}
else st=mij+1;
}
v[loc]=x[i];
poz[i]=loc;
if (loc>lmax)
lmax=loc;
}
for (i=nrel;i>=1;i--)
if (poz[i]==lmax)
{
nrsol++;
sol[nrsol]=x[i];
lmax--;
}
fo<<nrsol<<'\n';
for (i=nrsol;i>=1;i--) fo<<sol[i]<<' ';
return 0;
}