Pagini recente » Cod sursa (job #750440) | Cod sursa (job #2695906) | Cod sursa (job #2516567) | Cod sursa (job #1770829) | Cod sursa (job #1401206)
#include <bits/stdc++.h>
using namespace std;
int p, sol, i, n, a[100005], back[100005], v[100005];
bool crit(int x, int y)
{
return a[x] < a[y];
}
void afis(int poz)
{
if(!poz)
return;
afis(back[poz]);
printf("%d ", a[poz]);
}
int main()
{
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
scanf("%d", &n);
for(i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
p = lower_bound(v + 1, v + sol + 1, i, crit) - v;
back[i] = v[p - 1];
if(p > sol)
{
sol = p;
v[p] = i;
continue;
}
if(a[i] < a[v[p]])
v[p] = i;
}
printf("%d\n", sol);
afis(v[sol]);
return 0;
}