Pagini recente » Cod sursa (job #1211231) | Cod sursa (job #855355) | Cod sursa (job #186938) | Cod sursa (job #741563) | Cod sursa (job #2304580)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,d[100005],v[100005],t[100005],x,sol[100005],c,st,dr,mid;
int main(){
fin>>n;
for(int i=1;i<=n;i++){
fin>>v[i];
}
v[n+1]=2000000005;
for(int i=1;i<=n+1;i++){
st=1;
dr=c;
while(st<=dr){
mid=(st+dr)/2;
if(v[i]>v[d[mid]]){
st=mid+1;
}
else{
dr=mid-1;
}
}
if(st>c){
c++;
}
d[st]=i;
t[i]=d[st-1];
}
fout<<c-1<<"\n";
x=n+1;
for(int i=1;i<c;i++) {
sol[i]=v[t[x]];
x=t[x];
}
for(int i=c-1;i>=1;i--){
fout<<sol[i]<<" ";
}
}