Cod sursa(job #2033291)

Utilizator CodrinsahCotarlan Codrin Codrinsah Data 6 octombrie 2017 16:31:32
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
using namespace std;
ifstream fi ("scmax.in");
ofstream fo ("scmax.out");
int v[100005],poz[100005],x[100005],st,dr,i,nrel,mij,loc,lmax,it,nrsol;
int sol[100005];
int main()
{
    fi>>nrel;
    v[0]=-1;
    poz[0]=-1;
    for (i=1;i<=nrel;i++) v[i]=2000000006;
    for (i=1;i<=nrel;i++) fi>>x[i];
    for (i=1;i<=nrel;i++)
    {
      st=0;dr=nrel;
      while (st<=dr)
      {
        mij=(st+dr)/2;
        if (x[i]<=v[mij]) {dr=mij-1;loc=mij;}
        else st=mij+1;
      }
      v[loc]=x[i];
      poz[i]=loc;
      if (loc>lmax)
        lmax=loc;
    }
    for (i=nrel;i>=1;i--)
      if (poz[i]==lmax)
    {
      nrsol++;
      sol[nrsol]=x[i];
      lmax--;
    }
    fo<<nrsol<<'\n';
    for (i=nrsol;i>=1;i--) fo<<sol[i]<<' ';
    return 0;
}