Pagini recente » Cod sursa (job #1313921) | Cod sursa (job #1516306) | Cod sursa (job #2346676) | Cod sursa (job #799830) | Cod sursa (job #2565410)
#include <bits/stdc++.h>
#define DIM 100010
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
int v[DIM],w[DIM],d[DIM],t[DIM];
int n,i,k,el;
int main (){
fin>>n;
for (i=1;i<=n;i++)
fin>>v[i];
d[1] = 1;
k = 1;
for (i=2;i<=n;i++){
int st = 1, dr = k;
while (st <= dr){
int mid = (st+dr)>>1;
if (v[d[mid]] < v[i])
st = mid+1;
else dr = mid-1;
}
if (st == k+1)
k++;
t[i] = d[st-1];
d[st] = i;
}
fout<<k<<"\n";
int x = d[k];
while (x){
w[++el] = v[x];
x = t[x];
}
for (i=el;i;i--)
fout<<w[i]<<" ";
return 0;
}