Pagini recente » Cod sursa (job #834952) | Cod sursa (job #1893066) | Cod sursa (job #1322386) | Cod sursa (job #1994942) | Cod sursa (job #2149160)
#include <fstream>
#define nmax 100002
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int v[nmax],lg[nmax],pred[nmax],lm=0,n;
int pozs(int val)
{
int q,poz;
for(q=1;q<=lm;q<<=1);
for(poz=0;q;q>>=1)
{
if(poz+q<=lm&&v[lg[poz+q]]<val)
poz+=q;
}
return poz;
}
void afis(int x)
{
if(pred[x])
{
afis(pred[x]);
}
fout<<v[x]<<" ";
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>v[i];
}
lg[1]=1;
v[0]=20000002;
for(int i=1;i<=n;i++)
{
int po=pozs(v[i]);
lm=max(lm,po+1);
lg[po+1]=i;
pred[i]=lg[po];
}
fout<<lm<<"\n";
afis(lg[lm]);
return 0;
}