Pagini recente » Cod sursa (job #28125) | Cod sursa (job #3211551) | Cod sursa (job #642316) | Cod sursa (job #915830) | Cod sursa (job #1904719)
#include <bits/stdc++.h>
using namespace std;
vector <int> ar;
#define RRR ios_base::sync_with_stdio(false);cin.tie(0);
vector <int> LIS()
{
if (ar.size() == 0)
return ar;
vector <int> tail(ar.size(),0);
int l = 1;
tail[0] = ar[0];
for (int i=1;i<ar.size();i++)
{
if (ar[i] < tail[0])
tail[0] = ar[i];
else if (ar[i]> tail[l+1])
tail[l++] = ar[i];
else
tail[binary_search(tail.begin(),tail.end(),ar[i])] = ar[i];
}
return tail;
}
int main()
{
RRR
int n;
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
cin >> n;
for (int i=0;i<n;i++)
{
int z;
cin >> z;
ar.push_back(z);
}
vector <int> b = LIS();
b.erase(unique(b.begin(),b.end()),b.end());
cout << b.size()-1 << "\n";
for (int i=0;i<b.size()-1;i++)
{
cout << b[i] << " ";
}
}