Cod sursa(job #2495593)

Utilizator RedXtreme45Catalin RedXtreme45 Data 19 noiembrie 2019 17:53:46
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>
#define Nmax 100001
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
struct vect{
    int val,poz;
}v[Nmax];
int n,st,dr,v1[Nmax],sol[Nmax];
int main()
{
    int i;
    fin>>n;
    v1[0]=-1;
    for (i=1;i<=n;i++)
    {
        fin>>v[i].val;
        int p=lower_bound(v1,v1+dr,v[i].val)-v1;
        if (v1[p]==v[i].val)
            p--;
        if (p==dr && v1[dr]<v[i].val)
        {
            dr++;
            v1[dr]=v[i].val;
            v[i].poz=dr;
        }
        else
        {
            v1[p]=v[i].val;
            v[i].poz=p;
        }
    }

    i=n;
    int n1=dr;
    while (dr>0)
    {
        if (v[i].poz==dr)
        {
            sol[dr]=v[i].val;
            dr--;
        }
        i--;
    }
    fout<<n1<<"\n";
    for (i=1;i<=n1;i++)
        fout<<sol[i]<<" ";
    return 0;
}