Cod sursa(job #1194395)

Utilizator buzu.tudor67Tudor Buzu buzu.tudor67 Data 3 iunie 2014 19:29:49
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<fstream>
using namespace std;
ifstream fi("scmax.in");
ofstream fo("scmax.out");

const int maxn = 100005;

int a[maxn],lung[maxn];
int sol[maxn],c[maxn];
int i,n,x,lmax;

void inserare(int st,int dr){
     int mid=(st+dr)/2;
     
     if(st==dr){
                c[dr]=a[i];
                if(dr>lmax) lmax=dr;
                lung[i]=dr; 
               }
     else{
          if(a[i]>c[mid]) inserare(mid+1,dr);
          else inserare(st,mid);
         }
}

int main(){
    fi>>n; lmax=0;
    for(i=1;i<=n;i++) fi>>a[i]; 
    for(i=1;i<=n;i++) inserare(1,lmax+1);
    
    fo<<lmax<<"\n";
    x=lmax;
    
    for(i=n;i>=1;i--)
      if(lung[i]==x){
                     sol[x]=a[i];
                     x--;
                    }
                    
    for(i=1;i<=lmax;i++) fo<<sol[i]<<" ";
    
    fi.close();
    fo.close();
    return 0;
}