Pagini recente » Cod sursa (job #2841191) | Cod sursa (job #1866034) | Cod sursa (job #1868002) | Cod sursa (job #2880537) | Cod sursa (job #1955398)
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n, i, j, a[100005], poz[100005], b[100005], k, sol[100005];
int main() {
f >> n;
for (i = 1; i <= n; i++) {
f >> a[i];
int st = 1, dr = k, mij;
while (st <= dr) {
mij = (st+dr)/2;
if (a[i] <= b[mij])
dr = mij-1;
else st = mij+1;
}
b[st] = a[i];
poz[i] = st;
if (st == k+1) k++;
}
g << k << '\n';
for (i = n; i >= 1&&k; i--)
if (poz[i]==k)
sol[++j] = a[i], k--;
while (j) g << sol[j--] << ' ';
return 0;
}