Cod sursa(job #2244634)

Utilizator Anakin1001George Giorgiu Gica Anakin1001 Data 23 septembrie 2018 12:13:07
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f ("scmax.in");
ofstream g ("scmax.out");
int i,j,n,k,sol[100001],a[100001],v[100001],st,dr,mid,poz,l[100001],tata[100001],maxi,p;
int main()
{   f>>n;k=0;
    for(i=1;i<=n;i++){
        f>>v[i];
        st=1;dr=k+1;poz=k+1;
        while(st<=dr){
            mid=(st+dr)/2;
            if(v[a[mid]]>=v[i]){
                dr=mid-1;
                poz=mid;
            }
            else{
                st=mid+1;
            }
        }
        a[poz]=i;
        tata[i]=a[poz-1];
        l[i]=poz;
        k=max(poz,k);
        if(maxi<l[i]){
            maxi=l[i];
            p=i;
        }
    }
    k=0;
    for(i=1;i<=maxi;i++){
        sol[++k]=v[p];
        p=tata[p];
    }
    g<<maxi<<'\n';
    for(i=k;i>=1;i--)
        g<<sol[i]<<' ';
    return 0;
}