Cod sursa(job #1646799)

Utilizator ionut98Bejenariu Ionut Daniel ionut98 Data 10 martie 2016 17:47:23
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include<fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,i,j,a[100001];
int fin[100001],k;
int b[100001];
int main()
{
    f>>n;
    for(i=1;i<=n;i++)
      f>>a[i];
    for(i=1;i<=n;i++)
      if(a[i]>fin[k])
      {
          k++;
          fin[k]=a[i];
          b[i]=k;
      }
      else
      {
          int st=1,dr=k,poz=k;
          int mij;
          while(st<=dr)
          {
              mij=(st+dr)/2;
              if(fin[mij]>=a[i])
              {
                  dr=mij-1;
                  poz=mij;
              }
              else
                st=mij+1;
          }
          fin[poz]=a[i];
          b[i]=poz;
      }
    j=k;
    k=0;
    for(i=n;i>=1&&j>0;i--)
      if(b[i]==j)
      {
          k++;
          fin[k]=a[i];
          j--;
      }
    g<<k<<"\n";
    for(i=k;i>=1;i--)
      g<<fin[i]<<" ";
    return 0;
}