Pagini recente » Cod sursa (job #1641712) | Cod sursa (job #65146) | Cod sursa (job #2421115) | Cod sursa (job #2783042) | Cod sursa (job #2291428)
#include <fstream>
#define MAX 100004
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,Best[MAX],x,maxi,s,d,mij;
int V[MAX];
int main(){
int i,j;
fin>>n;
for(i=0;i<n;++i){
fin>>x;
if(x>Best[maxi]){
++maxi;
Best[maxi]=x;
for(j=1;j<=maxi;++j)V[j]=Best[j];
}else{
s=-1; d=maxi;
while(d-s>1){
mij=(s+d)/2;
if(Best[mij]<x)s=mij;
else d=mij;
}
if(s!=-1)
Best[s+1]=x;
}
}
fout<<maxi<<'\n';
for(i=1;i<=maxi;++i){
fout<<V[i]<<' ';
}
fout.close();
return 0;
}