Pagini recente » Cod sursa (job #1949700) | Cod sursa (job #1259075) | Cod sursa (job #690295) | Cod sursa (job #1994382) | Cod sursa (job #2897638)
#include <fstream>
#include <iostream>
#include <vector>
#define MAX 100010
#define INF 2000000002
using namespace std;
int v[MAX];
int predec[MAX];
class node{
public:
int data;
int key;
int prev_key;
};
node sir[MAX];
int binsearch(int k, int l, int r){
int m = (l+r)/2;
if(r - l == 1)
return r;
else if(sir[m].data >= k)
return binsearch(k, l, m);
else
return binsearch(k, m, r);
}
void update(int key, int k, int n){
int idx;
idx = binsearch(k, 1, n+1);
sir[idx].data = k;
sir[idx].key = key;
sir[idx].prev_key = sir[idx - 1].key;
}
int main(){
ifstream fin;
ofstream fout;
fin.open("scmax.in");
fout.open("scmax.out");
int n, i;
fin >> n;
sir[1].data = 0;
for(i = 2; i <= n + 3; ++i){
sir[i].data = INF;
}
for(int i=1; i <= n; ++i){
fin >> v[i];
update(i, v[i], n);
}
int size = binsearch(INF, 1, n+2) - 2;
fout << size << "\n";
for(int i=2; i<=size+1; ++i)
fout << sir[i].data << " ";
}