Pagini recente » Cod sursa (job #313613) | Cod sursa (job #203732) | Cod sursa (job #2451344) | Cod sursa (job #1265872) | Cod sursa (job #2858705)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("scmax.in");
ofstream out ("scmax.out");
int v[100001], n;
vector <int> ans;
void solve()
{
in >> n;
for (int i = 1;i<=n;++i)
in >> v[i];
for (int i = 1;i<=n;++i)
{
if (ans.size() == 0)
ans.push_back(v[i]);
else
{
int st = 0, dr = ans.size() - 1;
int poz = 0, ok = 0;
while (st <= dr && !ok)
{
int mid = (st + dr) / 2;
if (ans[mid] == v[i])
poz = mid, ok = 1;
else if (ans[mid] < v[i])
poz = mid, st = mid + 1;
else
dr = mid - 1;
}
if (poz == ans.size() - 1 && ans[poz] < v[i])
ans.push_back(v[i]);
else
ans[poz] = v[i];
}
}
out << ans.size() << '\n';
for (auto it:ans)
out << it << ' ';
return;
}
main ()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t = 1;
//cin >> t;
while (t--)
solve();
return 0;
}