Pagini recente » Cod sursa (job #2648525) | Cod sursa (job #1083579) | Cod sursa (job #2750419) | Cod sursa (job #2042305) | Cod sursa (job #2052155)
#include <fstream>
#define NM 100001
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
int a[NM], b[NM], n;
void afis(int t, int nr) {
if (nr != 0)
for (int j = t; j >= 0; j--)
if (b[j] == nr) {
afis(j, nr - 1);
fout << a[j] << ' ';
break;
}
}
void afis(int t) {
int i, nr;
nr = b[t];
i = t;
while (nr > 0) {
if (b[i] == nr) {
nr--;
fout << a[i] << ' ';
}
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);
}
int nmax = 0;
int ibun;
for (i = 1; i <= n; ++i)
if (nmax < b[i]) nmax = b[i], ibun = i;
fout << b[ibun] << '\n';
afis(ibun, b[ibun]);
return 0;
}