Pagini recente » Cod sursa (job #1043495) | Cod sursa (job #2962188) | Cod sursa (job #3261173) | Cod sursa (job #2167104) | Cod sursa (job #2409072)
#include<bits/stdc++.h>
#define N 100030
using namespace std;
int a[N],t[N],p[N];
int n,k;
ofstream fout("scmax.out");
void rec(int x) {
if (x==0) return;
rec(p[x]);
fout<<a[x]<<" ";
}
int main() {
ifstream cin("scmax.in");
cin>>n;
for (int i=1; i<=n; ++i) cin>>a[i];
t[1]=1; k=1;
for (int i=2; i<=n; ++i) {
int st=1,dr=k;
while (st<=dr) {
int mid=(st+dr)>>1;
if (a[t[mid]]<a[i]) st=mid+1;
else dr=mid-1;
}
if (st==k+1) ++k;
t[st]=i;
p[i]=t[st-1];
}
fout<<k<<'\n';
rec(t[k]);
return 0;
}