Pagini recente » Cod sursa (job #46322) | Cod sursa (job #1862484) | Cod sursa (job #2251697) | Cod sursa (job #181711) | Cod sursa (job #1969321)
#include <bits/stdc++.h>
#define Nmax 100001
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int v[Nmax];
int t[Nmax];
int lg[Nmax];
int pq[Nmax];
inline bool cmp(const int &x, const int &y)
{
return lg[x]>=lg[y];
}
int main()
{int n,i,j;
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
lg[n]=1;
t[n]=0;
pq[1]=n;
for(i=n-1;i>0;i--)
{
for(j=1;j<=n-i;j++)
{
if(v[pq[j]]>v[i])
{
lg[i]=lg[pq[j]]+1;
t[i]=pq[j];
j=n+1;
}
}
pq[n-i+1]=i;
sort(pq+1,pq+n-i+2,cmp);
}
int maxx=0,poz;
for(i=1;i<=n;i++)
{
if(lg[i]>maxx)
{
maxx=lg[i];
poz=i;
}
}
g<<maxx<<'\n';
while(poz)
{
g<<v[poz]<<' ';
poz=t[poz];
}
return 0;
}