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