Pagini recente » Cod sursa (job #979731) | Cod sursa (job #1183567) | Istoria paginii utilizator/prekzursil | Cod sursa (job #1042951) | Cod sursa (job #2052148)
#include <fstream>
#define NM 100001
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
int a[NM], b[NM], n;
int nr = 0;
void afis(int i) {
int j;
if (i == 0) fout << nr << '\n';
for (j = i - 1; j >= 1; --j)
if (b[j] == b[i] - 1) {
nr++;
afis(j);
break;
}
if (j == 0) fout << nr + 1<< '\n';
fout << a[i] << ' ';
}
int main() {
int i, j;
fin >> n;
for (i = 1; i <= n; ++i) fin >> a[i];
for (i = 1; i <= n; ++i) {
int nmax = 0;
for (j = 1; j < i; ++j)
if (a[j] < a[i]) nmax = b[j] + 1;
b[i] = max(nmax, 1);
}
// for (i = 1; i <= n; ++i)
// fout << b[i] << ' ';
int nmax = 0;
int ibun;
for (i = 1; i <= n; ++i)
if (nmax < b[i]) nmax = b[i], ibun = i;
afis(ibun);
return 0;
}