Cod sursa(job #872004)

Utilizator RusuDRusu Daniel RusuD Data 5 februarie 2013 17:40:40
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include<fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int a[100002],x[100002],t[100002];
int n,i,st,dr,s,mij;
int afis(int m)
{if(m)
  {afis(t[m]);
   fout<<a[m]<<" ";
  }
}
int main()
{fin>>n;
 for(i=1;i<=n;i++)
 fin>>a[i];
 x[1]=1;
 s=1;
 for(i=2;i<=n;i++)
  {st=1;dr=s;
   while(st<=dr)
   {mij=(st+dr)/2;
    if(a[i]>a[x[mij]]) st=mij+1;
    else dr=mij-1;
   }
  if(st>s) s++;
  x[st]=i;
  t[i]=x[st-1];
 }
 fout<<s<<"\n";
 afis(x[s]);
 fin.close();
 fout.close();
 return 0;
 }