Pagini recente » Cod sursa (job #1623582) | Monitorul de evaluare | Cod sursa (job #1808241) | Cod sursa (job #261005) | Cod sursa (job #2376147)
#include <bits/stdc++.h>
#define ll long long
#define lf long double
using namespace std;
//ifstream fin("scmax.in");
//ofstream fout("scmax.out");
vector<int> d;
int n,x,a[100005],b[100005],c[100005],ans;
int main()
{
ios_base::sync_with_stdio(false);
cin>>n;
for (int i=1;i<=n;i++)
cin>>a[i];
for (int i=1;i<=n;i++)
{
c[i]=lower_bound(b+1, b+ans+1,a[i])-b;
ans=max(ans,c[i]);
b[c[i]]=a[i];
}
cout<<ans<<'\n';
for (int i=n;i>=1;i--)
if (c[i]==ans)
{
d.push_back(a[i]);
ans--;
}
while (d.size())
{
cout<<d.back()<<" ";
d.pop_back();
}
return 0;
}
//Long long output!!!
//Check constraints!!!