Cod sursa(job #2331226)

Utilizator bodea.georgianaBodea Georgiana bodea.georgiana Data 29 ianuarie 2019 13:11:46
Problema Subsir crescator maximal Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <cstdio>

using namespace std;
FILE *f,*g;
int n,v[100002],lgm=0;

void dinamica(int x)
{
    if(lgm==0)
    {
        v[++lgm]=x;
        return;
    }
    if(x<v[1])
    {
        v[1]=x;
        return;
    }
    if(x>v[lgm])
    {
        v[++lgm]=x;
        return;
    }
    int st=1,dr=lgm,mij;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(v[mij]>x && v[mij-1]<x)
        {
            break;
        }
        if(v[mij]<x)
            st=mij+1;
        else
            dr=mij-1;
    }
    v[mij]=x;
}
int main()
{
    int x;
    f=fopen("scmax.in","r");
    g=fopen("scmax.out","w");
    fscanf(f,"%d",&n);
    for(int i=1;i<=n;++i)
    {
        fscanf(f,"%d",&x);
        dinamica(x);
    }
    fprintf(g,"%d\n",lgm);
    for(int i=1;i<=lgm;++i)
        fprintf(g,"%d ",v[i]);
    fclose(f);
    fclose(g);
    return 0;
}