Cod sursa(job #2521323)

Utilizator bodea.georgianaBodea Georgiana bodea.georgiana Data 10 ianuarie 2020 19:07:13
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#define N 100002

using namespace std;

int v[N],sol[N],lg;

void dinamica(int x)
{
    if(lg==0 || sol[lg]<x)
    {
        sol[++lg]=x;
        for(int i=1;i<=lg;++i)
            v[i]=sol[i];
    }
    else
    {
        int st=1,dr=lg,mij;
        int poz=0;///NU UITA de initializarea asta!!!!
        while(st<=dr)
        {
            mij=(st+dr)/2;
            if(sol[mij]<x)
                poz=mij,st=mij+1;
            else
                dr=mij-1;
        }
        sol[poz+1]=x;
    }
}
int main()
{
    ifstream f("scmax.in");
    ofstream g("scmax.out");
    int n,x;
    f>>n;
    for(int i=1;i<=n;++i)
    {
        f>>x;
        dinamica(x);
    }
    g<<lg<<"\n";
    for(int i=1;i<=lg;++i) g<<sol[i]<<' ';
    f.close();
    g.close();
    return 0;
}