Pagini recente » Cod sursa (job #33505) | Cod sursa (job #1076673) | Cod sursa (job #1850755) | Cod sursa (job #2473701) | Cod sursa (job #2917215)
#include <bits/stdc++.h>
#pragma GCC optimize ("Ofast")
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
const int MAX_N = 100005;
int n, v[MAX_N];
int m, minn[MAX_N], parent[MAX_N];
int st, md, dr, save;
void traceback(int index){
if(index != 0){
traceback(parent[index]);
fout<<v[index]<<" ";
}
}
int main (){
ios_base::sync_with_stdio(false);
fin.tie(nullptr), fout.tie(nullptr);
fin>>n;
for(int i=1; i<=n; i++){
fin>>v[i];
st = 0;
dr = m;
while(st <= dr){
md = st + ((dr-st)>>1);
if(v[minn[md]] < v[i]){
save = md;
st = md + 1;
}else{
dr = md - 1;
}
}
minn[save+1] = i;
parent[i] = minn[save];
if(save == m)
m++;
}
fout<<m<<"\n";
traceback(minn[m]);
return 0;
}