Cod sursa(job #2373133)

Utilizator victorzarzuZarzu Victor victorzarzu Data 7 martie 2019 12:24:43
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,v[100001],poz[100001],maxim=0,lung[100001],pozitie;
void citire()
{
    f>>n;
    for(int i=1;i<=n;++i)
        f>>v[i];
}
int main()
{
    citire();
    poz[n]=-1;
    lung[n]=1;
    pozitie=n;
    for(int i=n-1;i>=1;--i)
        {
            lung[i]=1;
            poz[i]=-1;
            for(int j=i+1;j<=n;++j)
                if(v[i]<v[j] && lung[i]<lung[j]+1)
                {
                    poz[i]=j;
                    lung[i]=lung[j]+1;
                    if(maxim<lung[i])
                    {
                        maxim=lung[i];
                        pozitie=i;
                    }
                }
        }
    g<<lung[pozitie]<<'\n';
    int i=pozitie;
    while(1)
    {
        g<<v[i]<<" ";
        i=poz[i];
        if(i==-1)
            break;
    }
    for(int i=1;i<=n;++i)
        cout<<lung[i]<<" ";
    cout<<pozitie<<" ";
    return 0;
}