Pagini recente » Cod sursa (job #1100295) | Cod sursa (job #2057452) | Cod sursa (job #2218927) | Cod sursa (job #1696795) | Cod sursa (job #2972458)
#include <fstream>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
int best[100005],f[100005],v[100005],k=0,rez[100005];
int cb(int nr)
{
int st=1,dr=k,mij,poz=0;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[best[mij]]<nr)
{
poz=mij;
st=mij+1;
}
else
dr=mij-1;
}
return poz;
}
int main()
{
int n;
in>>n;
for(int i=1;i<=n;i++)
{
in>>v[i];
int poz=cb(v[i]);
best[poz+1]=i;
if(poz==k)
k++;
f[i]=best[poz];
}
out<<k<<'\n';
int pozc=best[k],d=0;
while(pozc!=0)
{
rez[++d]=v[pozc];
pozc=f[pozc];
}
for(int i=d;i>=1;i--)
out<<rez[i]<<" ";
return 0;
}