Pagini recente » Cod sursa (job #3268798) | Cod sursa (job #771993) | Cod sursa (job #260583) | Cod sursa (job #1096523) | Cod sursa (job #635218)
Cod sursa(job #635218)
#include<fstream>
#include<iostream>
#include<string>
using namespace std;
#define nmax 100001
int a[nmax],best[nmax];
int i,j,n;
int caut(int lol,int f,int l){
int m=(f+l)/2;
if(f==l-1)
m++;
if(lol<=best[m] && lol>=best[m-1])
best[m]=lol;
else
if(lol>=best[m])
caut(lol,m,l);
else
caut(lol,f,m);
}
int ct;
int main(){
ifstream f("scmax.in");
ofstream g("scmax.out");
f>>n;
for(i=1;i<=n;i++){
f>>a[i];
best[i]=9999;
}
best[n+1]=9999;
best[0]=-9999;
for(i=1;i<=n;i++){
caut(a[i],0,n);
}
for(i=1;i<=n;i++){
if(best[i]==9999){
i=n+1;
}
else{
ct++;
}
}
g<<ct<<"\n";
for(i=1;i<=n;i++){
if(best[i]==9999){
i=n+1;
}
else{
g<<best[i]<<" ";
}
}
return 0;
}