Cod sursa(job #2950843)

Utilizator lucametehauDart Monkey lucametehau Data 4 decembrie 2022 19:29:43
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.5 kb
#include <fstream>
std::ifstream f("scmax.in");
std::ofstream g("scmax.out");
int n,x,r,i,s,d,m;
int v[1<<17],k[1<<17],a[1<<17];
void p(int r) {
    if (!r)return;
    int n;
    while (a[n=--i]!=r);
    p(r-1);
    g<<v[n]<<" ";
}
int main() {
  f>>n;
  for(i=1;i<=n;i++){f>>v[i],k[i]=2e9;
    s=0,d=i;
    while(s<=d) {
      if(k[m=(s+d)/2]<=v[i])
        s=m+1;
      else
        d=m-1;
    }
    if(k[d]<v[i])
      k[s]=v[i],a[i]=s,x=r=(s>r?s:r);
  }
  g<<r<<" ";
  p(r);
}