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