Pagini recente » Cod sursa (job #2219296) | Cod sursa (job #224012) | Cod sursa (job #243678) | Cod sursa (job #1258070) | Cod sursa (job #1190272)
#include <fstream>
using namespace std;
int t[100001], n, i, d[100001], v[100001], k, p, u, mij;
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=2; 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;
}