Pagini recente » Cod sursa (job #1954334) | Statisticile problemei Cartite | Cod sursa (job #618628) | Cod sursa (job #282514) | Cod sursa (job #3041493)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
///#include <tryhardmode>
///#include <GODMODE::ON>
using namespace std;
#define cin fin
#define cout fout
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
const int NMAX=1e5+5;
int poz[NMAX];
int lung[NMAX];
int v[NMAX];
int ind[NMAX];
int cautbin(int x,int st,int dr)
{
int ans=0,mij;
while(st<=dr)
{
mij=st+dr;
mij/=2;
if(v[poz[mij]]<v[x])
{
ans=mij;
st=mij+1;
}
else
dr=mij-1;
}
return ans;
}
int main()
{
int n,i,j,maxim=0,kon=0;
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
for(i=1;i<=n;i++)
{
int p=cautbin(i,0,maxim);
poz[p+1]=i;
lung[i]=p+1;
maxim=max(maxim,lung[i]);
}
cout<<maxim<<"\n";
for(i=n;i>=1;i--)
{
if(lung[i]==maxim)
{
maxim--;
ind[++kon]=i;
}
}
for(i=kon;i>=1;i--)
cout<<v[ind[i]]<<" ";
return 0;
}