Pagini recente » Cod sursa (job #1179562) | Cod sursa (job #2490130) | Cod sursa (job #2591288) | Cod sursa (job #2615137) | Cod sursa (job #2356736)
#include <fstream>
using namespace std;
const int NMAX=100001;
int n;
int v[NMAX],x[NMAX],t[NMAX];
void citire () {
ifstream in("scmax.in");
in>>n;
for (int i=1;i<=n;i++)
in>>v[i];
in.close();
}
ofstream out("scmax.out");
int construiesc () {
int maxim=0,imaxim;
for (int i=1;i<=n;i++) {
for (int j=0;j<i;j++) {
if (v[j]<v[i] && x[j]+1>x[i]){
x[i]=x[j]+1;
t[i]=j;
}
}
if (x[i]>maxim) {
maxim=x[i];
imaxim=i;
}
}
out<<maxim<<'\n';
return imaxim;
}
void afisRec (int i) {
if (t[i]!=0)
afisRec(t[i]);
out<<v[i]<<' ';
}
void afisare () {
afisRec(construiesc());
}
int main()
{
citire();
afisare();
return 0;
}