Pagini recente » Autentificare | Istoria paginii runda/vali_tigan/clasament | Istoria paginii runda/becalisme | Istoria paginii runda/oni_11_12_7 | Cod sursa (job #2280089)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("scmax.in") ;
ofstream fout ("scmax.out") ;
int main()
{
int n , sir[100015] ;
fin>>n ;
for(int i=0 ; i<n ; i++)
fin>>sir[i] ;
int e[100015] , p[100015] , ap[100015] , ma=0 ;
p[0]=0 ;
e[0]=sir[0] ;
for(int i=1 ; i<n ; i++)
if(e[ma]<sir[i])
{
ma++ ;
p[i]=ma ;
e[p[i]]=sir[i] ;
}
else
{
int k=ma ;
while(sir[i]<=e[k])
k-- ;
k++ ;
e[k]=sir[i] ;
p[i]=k ;
}
fout<<ma+1<<"\n" ;
int i=n-1 , aux=ma ;
while(ma>=0)
{
while(p[i]!=ma)
i-- ;
ap[ma]=i ;
ma-- ;
}
for(int i=0 ; i<=aux ; i++)
fout<<sir[ap[i]]<<" " ;
return 0;
}