Pagini recente » Cod sursa (job #1809277) | Cod sursa (job #1690355) | Cod sursa (job #1377841) | Cod sursa (job #616215) | Cod sursa (job #2203902)
#include <fstream>
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
#define mx 100050
int A[mx], best[mx], pos[mx], N, maxi, p;
void xd(){
best[N]=1;
pos[N]=-1;
maxi=0; p=-1;
for(int i=N-1;i>=1;i--){
best[i]=1;
pos[i]=-1;
for(int j=1+1;j<=N;j++){
if(A[i]<A[j] && best[i]<best[j]+1){
best[i]=best[j]+1;
pos[i]=j;
if(maxi<best[i]) {maxi=best[i], p=i;}
}
}
}
}
void afis(){
int i=p;
while(i!=-1){
cout<<A[i]<<" ";
i=pos[i];
}
}
int main()
{
cin>>N;
for(int i=1;i<=N;i++)
cin>>A[i];
xd();
cout<<maxi<<endl;
afis();
return 0;
}