Pagini recente » Cod sursa (job #427289) | Cod sursa (job #2152511) | Cod sursa (job #3148368) | Cod sursa (job #2893930) | Cod sursa (job #2965500)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
const int Nmax = 100001;
const int ValMax = 2000000000;
int v[Nmax], s[Nmax], prv[Nmax];
int binarySearch(int start, int finish, int index){
int mid, sol;
sol = -1;
while(start <= finish){
mid = (start + finish) / 2;
if(v[index] <= v[s[mid]]){
sol = mid;
finish = mid - 1;
}
else{
start = mid + 1;
}
}
return sol;
}
int main()
{
int n, lenmax, index;
fin >> n;
for(int i = 0; i < Nmax; i++){
s[i] = Nmax - 1;
}
v[Nmax - 1] = ValMax;
lenmax = 0;
for(int i = 0; i < n; i++){
fin >> v[i];
index = binarySearch(0, lenmax, i);
if(s[index] == Nmax - 1){
lenmax++;
}
s[index] = i;
}
fout << lenmax << '\n';
for(int i = 0; i < lenmax; i++){
fout << v[s[i]] << " ";
}
return 0;
}