Pagini recente » Cod sursa (job #3147924) | Cod sursa (job #2962821) | Cod sursa (job #1629199) | Cod sursa (job #2283912) | Cod sursa (job #2897627)
#include <fstream>
#include <iostream>
#define MAX 100010
#define INF 2000000002
using namespace std;
int v[MAX];
int sir[MAX];
int binsearch(int sir[], int k, int l, int r){
int m = (l+r)/2;
if(r - l == 1)
return r;
else if(sir[m] >= k)
return binsearch(sir, k, l, m);
else
return binsearch(sir, k, m, r);
}
void update(int k, int n){
int idx;
idx = binsearch(sir, k, 1, n+1);
sir[idx] = k;
}
int main(){
ifstream fin;
ofstream fout;
fin.open("scmax.in");
fout.open("scmax.out");
int n, i;
fin >> n;
sir[1] = 0;
for(i = 2; i <= n + 2; ++i)
sir[i] = INF;
for(int i=0; i < n; ++i){
fin >> v[i];
update(v[i], n);
}
int size = binsearch(sir, INF, 1, n+1) - 2;
fout << size << "\n";
for(int i=2; i<=size+1; ++i)
fout << sir[i] << " ";
}