Pagini recente » Cod sursa (job #1819471) | Cod sursa (job #549793) | Cod sursa (job #494337) | Cod sursa (job #219576) | Cod sursa (job #2723236)
#include <bits/stdc++.h>
#include <cstring>
# define pb push_back
#define nmax 100001
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
int n,i,a[nmax],poz[nmax],sol[nmax],k,st,dr,mij,j,kk,pozz;
vector <int> d;
int main()
{
in>>n;
for(i=1; i<=n; i++)
in>>a[i];
k=0;
d.pb(a[1]);
poz[1]=0;
for(i=2; i<=n; i++)
{
if(a[i]>d[k])
{
k++;
d.pb(a[i]);
poz[i]=k;
}
else
{
pozz=upper_bound(d.begin(),d.end(),a[i])-d.begin();
d[pozz]=a[i];
poz[i]=pozz;
}
}
out<<k+1<<"\n";
kk=k;
j=n;
while(k>=0)
{
while(poz[j]!=k)
j--;
sol[k]=j;
k--;
}
for(i=0; i<=kk; i++)
out<<a[sol[i]]<<" ";
return 0;
}