Cod sursa(job #611132)
Utilizator | Bucur Marius - Ovidiu marius.bucur | Data | 30 august 2011 21:51:10 |
---|---|---|---|
Problema | Subsir crescator maximal | Scor | 50 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.48 kb |
#include<iostream>
#include<fstream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#define MAXN 100000
using namespace std;
int A[MAXN];
int B[MAXN];
int p;
int N;
int main() {
ifstream in("scmax.in");
ofstream out("scmax.out");
in >> N;
for(int i = 0; i < N; i++) {
in >> A[i];
}
for(int i = 0; i < N; i++) {
int* pos = lower_bound(B, B + p, A[i]);
if(pos - B >= p) {
p++;
}
*pos = A[i];
}
out << p;
for(int i = 0; i < p; i++) {
printf("%d ", B[i]);
}
}