Pagini recente » Cod sursa (job #1616281) | Cod sursa (job #1742017) | Cod sursa (job #2178533) | Cod sursa (job #115888) | Cod sursa (job #699426)
Cod sursa(job #699426)
#include<fstream>
using namespace std;
const char In[]="scmax.in";
const char Out[]="scmax.out";
const int dim=100002;
ifstream f(In);
ofstream g(Out);
int a[dim],L[dim],maxu,pos,n;
void citire(){
f>>n;
for(register int i=1;i<=n;++i)
f>>a[i];
}
void scmax(){
L[n]=1;
for(register int i=n-1;i>=1;--i){
maxu=0;
for(register int j=i+1;j<=n;++j){
if(a[j]>a[i] && L[j]>maxu){
maxu=L[j];
}
}
L[i]=maxu+1;
}
maxu=L[1];
pos=1;
for(register int k=1;k<=n;k++){
if(L[k]>maxu){
maxu=L[k];
pos=k;
}
}
}
void abracaddabra(){
g<<maxu<<"\n";
g<<a[pos]<<" ";
for(register int i=pos+1;i<=n;++i)
if(L[i]==maxu-1 && a[i]>a[pos]){
g<<a[i]<<" ";
--maxu;
}
}
int main (){
citire();
scmax();
abracaddabra();
return 0;
}