Cod sursa(job #2006178)

Utilizator gruhtenZinnenberg Gruhten gruhten Data 28 iulie 2017 21:44:05
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
#define dim 100001
using namespace std;

ifstream f("scmax.in");
ofstream g("scmax.out");
int A[dim],Prec[dim],M[dim];

void afisare(int q){
    if (Prec[q])
      afisare(Prec[q]);
    g<<A[q]<<" ";
}

int main()
{

int i,N,st,dr,mij,k=0,poz;

f>>N;
for(i=1;i<=N;++i)
{
    f>>A[i];
    st=1;
    dr=k;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(A[i]>A[M[mij]])
            st=mij+1;
        else
            dr=mij-1;
    }
    M[st]=i;
    Prec[i]=M[st-1];

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

g<<k<<'\n';
//afisam elementele
//for(i=1;i<=k;++i)
//    g<<M[i]<<' ';
afisare(poz);

g<<'\n';

    return 0;
}