Cod sursa(job #3239670)

Utilizator pinzaruliviuPinzaru Liviu-Vasile pinzaruliviu Data 7 august 2024 11:52:46
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include<fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
const int dim=100002;

int v[dim],pz[dim],pr[dim],q[dim];

void afis(int a)
{
    if(a!=0)
    {
        afis(pr[a]);
        g<<v[a]<<' ';
    }
}

int main()
{
    int i,j=0,n,k=0,st,dr,mij,poz;

    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>v[i];
        st=1;
        dr=k;
        while(st<=dr)
        {
            mij=(st+dr)/2;
            if(v[i]>v[pz[mij]])
            {
                st=mij+1;
            }
            else
            {
                dr=mij-1;
            }
        }
        pz[st]=i;
        pr[i]=pz[st-1];

        if(st>k)
        {
          k=st;
          poz=i;
        }
    }

    g<<k<<'\n';

//    while(poz>0)
//    {
//        q[++j]=v[poz];
//        poz=pr[poz];
//    }
//    for(i=j;i>=1;i--)
//        g<<q[i]<<' ';

    afis(poz);

    return 0;
}