Pagini recente » Cod sursa (job #1457421) | Cod sursa (job #1243120) | Cod sursa (job #1535008) | Cod sursa (job #1867932) | Cod sursa (job #2765871)
#include <fstream>
#include <iomanip>
#include <cmath>
#include <algorithm>
#include <string>
#include <vector>
#include <cstring>
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
const int nmax = 1e5;
int a[nmax + 1], x[nmax + 1], t[nmax + 1], n, p, u, m, s;
vector <int> ans;
int main(){
cin >> n;
for(int i = 1; i <= n; ++i){
cin >> a[i];
}
x[1] = 1;
p = 1, s = 1;
for(int i = 2; i <= n; ++i){
p = 1;
u = s;
while(p <= u){
m = (p + u) / 2;
if(a[i] > a[x[m]]){
p = m + 1;
}
else{
u = m - 1;
}
}
if(p > s){
s++;
}
x[p] = i;
t[i] = x[p - 1];
}
cout << s << "\n";
for(int i = 1; i <= s; ++i){
cout << a[x[i]] << " ";
}
return 0;
}