Mai intai trebuie sa te autentifici.
Cod sursa(job #2280086)
| Utilizator | Data | 10 noiembrie 2018 11:21:17 | |
|---|---|---|---|
| Problema | Subsir crescator maximal | Scor | 70 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.88 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("scmax.in") ;
ofstream fout ("scmax.out") ;
int main()
{
int n , sir[100000] ;
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;
}
