Pagini recente » Profil Mrguny | Cod sursa (job #1504296) | Cod sursa (job #1294441) | Cod sursa (job #1352942) | Cod sursa (job #2386052)
#include <bits/stdc++.h>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
const int MX = 100005;
int n, lg;
int v[MX], a[MX], pz[MX];
int main()
{
in>>n;
for(int i = 1; i <= n; ++i) in>>v[i];
a[++lg] = v[1];
for(int i = 2; i <= n; ++i)
if(v[i] > a[lg])
a[++lg] = v[i], pz[i] = lg;
else
{
int p = lower_bound(a + 1, a + lg + 1, v[i]) - a;
a[p] = v[i];
pz[i] = lg;
}
int t = lg;
for(int i = n; i >= 1; --i)
if(pz[i] == t)
{
a[t] = v[i];
--t;
}
out<<lg<<"\n";
for(int i = 1; i <= lg; ++i)
out<<a[i]<<" ";
return 0;
}