Pagini recente » Cod sursa (job #1559284) | Cod sursa (job #2904022) | Cod sursa (job #1601916) | Cod sursa (job #1144839) | Cod sursa (job #1330628)
#include <fstream>
#define DIM 100005
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int N,v[DIM],w[DIM],nr,t[DIM];
void drum(int x){
if(t[x])
drum(t[x]);
fout<<v[x]<<" ";
}
int main(){
fin>>N;
for(int i=1;i<=N;i++){
fin>>v[i];
if(v[i]>v[w[nr]]){
w[++nr]=i;
t[i]=w[nr-1];
}
else{
int p=1,u=nr,mid;
while(p<=u){
mid=(p+u)>>1;
if(v[i]>v[w[mid]])
u=mid-1;
else
p=mid+1;
}
if(v[i]<v[w[p-1]]){
w[p]=i;
t[i]=w[p-2];
}
}
}
fout<<nr<<"\n";
drum(w[nr]);
fin.close();fout.close();
return 0;
}