Pagini recente » Cod sursa (job #345811) | Cod sursa (job #2896280) | Cod sursa (job #8177) | Cod sursa (job #1141932) | Cod sursa (job #3185396)
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
const int nmax = 100005;
int n, min_val[nmax], a[nmax];
int len, dp[nmax], b[nmax];
int main()
{
f >> n;
for(int i = 1; i <= n; i ++)
f >> a[i];
for(int i = 1; i <= n; i ++)
{
int p = lower_bound(min_val + 1, min_val + len + 1, a[i]) - min_val;
if(p > len)
len ++;
dp[i] = p;
min_val[p] = a[i];
}
int p = len, x = 0;
g << len << '\n';
for(int i = n; i >= 1; i --)
if(dp[i] == p)
if(p == len)
{
b[p --] = a[i];
x = a[i];
}
else
{
if(x > a[i])
{
b[p --] = a[i];
x = a[i];
}
}
for(int i = 1; i <= len; i ++)
g << b[i] << " ";
return 0;
}