Pagini recente » Cod sursa (job #875478) | Cod sursa (job #169999) | Cod sursa (job #962249) | Cod sursa (job #449474) | Cod sursa (job #1331622)
#include<fstream>
using namespace std;
int i, n, x[100003], t[100003], d[100003], p, u, mij, k;
ifstream in("scmax.in");
ofstream out("scmax.out");
void drum(int k){
if(k!=0){
drum(t[k]);
out<<x[d[k]]<<" ";
}
}
int main(){
in>>n;
for(i=1; i<=n; i++)
in>>x[i];
for(i=1; i<=n; i++){
p=1; u=k;
while(p<=u){
mij=p+(u-p)/2;
if(x[i]<=x[d[mij]])
u=mij-1;
else
p=mij+1;
}
if(p>k){
d[++k]=i;
t[k]=p-1;
}
else{
if(x[i]<x[d[p]]){
d[p]=i;
t[i]=p-1;
}
}
}
out<<k<<"\n";
drum(k);
return 0;
}