Pagini recente » Cod sursa (job #1778727) | Cod sursa (job #584898) | Cod sursa (job #2101036) | Cod sursa (job #2445275) | Cod sursa (job #1103912)
#include<fstream>
using namespace std;
int a[100000], l[100000], urm[100000];//, sum[100000];
int n, mx, mxp;
int ur(int p) {
int i;
for (i = p + 1; i < n; i++) {
if (a[i] > a[p]) {
urm[p] = i;
break;
}
}
return 0;
}
int lun(int p) {
int i;
if (urm[p] == 0) {
l[p] = 1;
return 0;
}
l[p] = 1 + l[urm[p]];
if (l[p] > mx) {
mx = l[p];
mxp=p;
}
return 0;
}
/*int sm(int p) {
int i;
sum[p] = a[p] + sum[urm[p]];
if (sum[p] > mxs&&l[p]==mx) {
mxs = sum[p];
mxp = p;
}
return 0;
} */
int main() {
ifstream fin("scmax.in");
ofstream fout("scmax.out");
fin >> n;
int i;
for (i = 0; i < n; i++) {
fin >> a[i];
}
for (i = 0; i < n; i++) {
ur(i);
}
// sum[n - 1] = a[n - 1];
for (i = n - 1; i >= 0; i--) {
lun(i);
}
i=mxp;
fout << l[mxp]<<endl;
while(1){
fout << a[i] << " ";
i=urm[i];
if (i==0) {
break;
}
}
// fout << endl << mxs;
return 0;
}