Pagini recente » Cod sursa (job #1669677) | Cod sursa (job #2935563) | Cod sursa (job #2309178) | Cod sursa (job #1816988) | Cod sursa (job #2883096)
#include <fstream>
#include <algorithm>
#define NMAX 100000
#define VALMAX 2000000000
#define INF 2100000000
using namespace std;
ifstream cin ("scmax.in");
ofstream cout ("scmax.out");
int vlastval[NMAX + 1]; /// vlastval[i] -- valoarea in care subsirul crescator de lungimea i se opreste
int main() {
int n, val, i, j, poz, scmax;
cin >> n;
vlastval[0] = -INF;
for (i = 1; i <= n; i++)
vlastval[i] = INF;
for (i = 0; i < n; i++) {
cin >> val;
poz = upper_bound(vlastval, vlastval + n + 1, val) - vlastval;
if (vlastval[poz] > val && val > vlastval[poz - 1]) {
vlastval[poz] = val;
scmax = max(scmax, poz);
}
}
cout << scmax << "\n";
for (i = 1; i <= scmax; i++)
cout << vlastval[i] << " ";
return 0;
}