Pagini recente » Cod sursa (job #2523348) | Cod sursa (job #3154041) | Cod sursa (job #1614568) | Istoria paginii runda/oni2014_ziua_ix/clasament | Cod sursa (job #3149100)
#include <bits/stdc++.h>
#pragma GCC optimize ("Ofast")
#pragma GCC target ("popcnt")
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
const int MAX_N = 100000;
const int LIM = 2000000000;
int n, v[MAX_N + 5];
int m, height[MAX_N + 5], index[MAX_N + 5], parent[MAX_N + 5];
int st, md, dr, save;
inline void drum(int i){
if(i != 0){
drum(parent[i]);
fout<<v[i]<<" ";
}
return;
}
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];
m = 0;
height[0] = 0;
for(int i=1; i<=n; i++){
st = 0;
dr = m;
while(st <= dr){
md = (st + dr) / 2;
if(height[md] < v[i]){
save = md;
st = md + 1;
}else{
dr = md - 1;
}
}
height[save+1] = v[i];
index[save+1] = i;
parent[i] = index[save];
if(save == m)
m++;
}
fout<<m<<"\n";
drum(index[m]);
return 0;
}