Cod sursa(job #2521320)

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

using namespace std;

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

void dinamica(int i)
{
    if(lg==0 || sol[lg]<v[i])
        sol[++lg]=v[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]<v[i])
                poz=mij,st=mij+1;
            else
                dr=mij-1;
        }
        sol[poz+1]=v[i];
    }
}
int main()
{
    ifstream f("scmax.in");
    ofstream g("scmax.out");
    int n;
    f>>n;
    for(int i=1;i<=n;++i)
    {
        f>>v[i];
        dinamica(i);
    }
    g<<lg<<"\n";
    for(int i=1;i<=lg;++i) g<<sol[i]<<' ';
    f.close();
    g.close();
    return 0;
}