Cod sursa(job #1969321)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 18 aprilie 2017 13:32:33
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#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;
}