Pagini recente » Cod sursa (job #3326089) | Cod sursa (job #3326076) | Cod sursa (job #3335561) | Cod sursa (job #3330815) | Cod sursa (job #3335822)
#include <iostream>
using namespace std;
#define N 100000
int v[N+1], s[N+1], v1[N+1];
int cbin(int mij, int st, int dr){
int i, j;
i = st - 1;
j = 1 << 16;
while (j != 0){
if (i + j <= dr && v[s[i + j]] < mij)
i += j;
j >>= 1;
}
return i;
}
void afis(int poz){
if (poz != -1){
afis(v1[poz]);
cout << v[poz] << '\n';
}
}
int main()
{
//ifstream cin ("scmax.in");
//ofstream cout ("scmax.out");
int n, i, l, x;
cin >> n;
for (i=0; i<n; i++)
cin >> v[i];
x = 0;
for (i=0; i<n; i++){
l = cbin(v[i], 0, x - 1) + 1;
s[l] = i;
if (l > 0)
v1[i] = s[l - 1];
else
v1[i] = -1;
x = max(x, l + 1);
}
cout << x << '\n';
afis(s[x - 1]);
return 0;
}