Pagini recente » Cod sursa (job #2984517) | Cod sursa (job #643526) | Cod sursa (job #5035) | Cod sursa (job #1183419) | Cod sursa (job #2811736)
#include <bits/stdc++.h>
using namespace std;
int n;
vector<int> v, a;
int find_bin(int x) {
int st = 0, dr = a.size() - 1, ans = INT32_MAX;
while(st <= dr) {
int mid = st + (dr - st)/2;
if(a[mid] >= x) {
ans = min(ans, mid);
dr = mid - 1;
} else {
st = mid + 1;
}
}
if(ans == INT32_MAX)
return -1;
return ans;
}
void solve() {
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
cin>>n;
for(int i = 1; i<=n; i++) {
int x; cin>>x;
v.push_back(x);
}
a.push_back(v[0]);
for(int i = 1; i < v.size(); i++) {
int pos = find_bin(v[i]);
if(pos == -1)
a.push_back(v[i]);
else
a[pos] = v[i];
}
cout<<a.size()<<'\n';
for(auto it : a)
cout<<it<<' ';
}
int main()
{
cin.tie(0);
ios_base::sync_with_stdio(false);
solve();
return 0;
}