Pagini recente » Cod sursa (job #1351751) | Cod sursa (job #2857599) | Cod sursa (job #2514821) | Cod sursa (job #2575688) | Cod sursa (job #2495593)
#include <bits/stdc++.h>
#define Nmax 100001
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
struct vect{
int val,poz;
}v[Nmax];
int n,st,dr,v1[Nmax],sol[Nmax];
int main()
{
int i;
fin>>n;
v1[0]=-1;
for (i=1;i<=n;i++)
{
fin>>v[i].val;
int p=lower_bound(v1,v1+dr,v[i].val)-v1;
if (v1[p]==v[i].val)
p--;
if (p==dr && v1[dr]<v[i].val)
{
dr++;
v1[dr]=v[i].val;
v[i].poz=dr;
}
else
{
v1[p]=v[i].val;
v[i].poz=p;
}
}
i=n;
int n1=dr;
while (dr>0)
{
if (v[i].poz==dr)
{
sol[dr]=v[i].val;
dr--;
}
i--;
}
fout<<n1<<"\n";
for (i=1;i<=n1;i++)
fout<<sol[i]<<" ";
return 0;
}