Pagini recente » Cod sursa (job #560866) | Cod sursa (job #3287320) | Cod sursa (job #341470) | Cod sursa (job #2699997) | Cod sursa (job #2950836)
#include <fstream>
std::ifstream cin("scmax.in");
std::ofstream cout("scmax.out");
int n,x,r,i,s,d,m;
int v[100005],dp[100005],a[100005],p[100005];
int main() {
cin>>n;
for(i=1;i<=n;i++){cin>>v[i],dp[i]=2e9;
s=0,d=i;
while(s<=d) {
if(dp[m=(s+d)/2]<=v[i])
s=m+1;
else
d=m-1;
}
if(dp[d]<v[i])
dp[s]=v[i],a[i]=s,x=r=(s>r?s:r);
}
cout<<r<<"\n";
for(i=n;i>=1;i--) {
if(a[i]==r)
p[--r]=v[i];
}
while(r<x)cout<<p[r++]<<" ";
}