Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #1487029) | Cod sursa (job #2309076)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,c,S[100001],sol;
int bin(int c, int n){
int l=0,r=n-1,m=(l+r)/2;
while(l+1<r){
if(S[m]<c)l=m;
else if(S[m]>c) r=m;
else break;
m=(l+r)/2;
}
while(S[m]<c && m<n)m++;
return m;
}
int main(){
fin>>n;
fin>>S[0];
sol=1;
for(int i=1;i<n;i++){
cin>>c;
int ind=bin(c,sol);
if(ind<sol)S[ind]=c;
else S[sol++]=c;
}
fout<<sol<<'\n';
for(int i=0;i<sol;i++){
fout<<S[i]<<' ';
}
}