Pagini recente » Borderou de evaluare (job #2247881) | Cod sursa (job #255335) | Cod sursa (job #261802) | Cod sursa (job #2126777) | Cod sursa (job #1984188)
#include <fstream>
using namespace std;
ifstream cin ("scmax.in");
ofstream cout ("scmax.out");
int n, A[100010],D[100010],poz[100010],m;
void afisare(int q){
if (poz[q]!=0) afisare(poz[q]),cout<<A[q]<<" ";
else cout<<A[q]<<" ";
}
int main(){
cin>>n;
for (int i=1; i<=n; i++) cin>>A[i],D[i]=1;
D[1]=1;
for (int i=2; i<=n; i++){
D[i]=D[i-1]; poz[i]=poz[i-1];
for (int j=i-1; j; j--){
if (A[i]>A[j] && D[j]+1>D[i]) D[i]=D[j]+1,m=A[i],poz[i]=j;
}
}
cout<<D[n]<<"\n";
afisare(poz[n]);
cout<<m<<" ";
return 0;
}