Pagini recente » Cod sursa (job #2205163) | Cod sursa (job #1909245) | Cod sursa (job #271360) | Cod sursa (job #2586229) | Cod sursa (job #2596037)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int sol[100010], i, n, j,x;
const int INF = 1e9;
vector<int>a;
struct {
int val;
int prev;
}A[100010];
void lis(vector<int> const& a) {
int n = a.size();
vector<int> d(n + 1, INF);
d[0] = -INF;
for (int i = 0; i < n; i++) {
int j = upper_bound(d.begin(), d.end(), a[i]) - d.begin();
if(a[i]!=d[j-1])d[j] = a[i];
}
for (i = 1; i <= n, d[i] < INF; i++)
cout << d[i] << " ";
}
int main() {
cin >> n;
for (i = 1; i <= n; i++)
cin >> x, a.push_back(x);
lis(a);
}