Cod sursa(job #2723236)

Utilizator dumitrustefaniaDumitru Stefania dumitrustefania Data 13 martie 2021 19:43:48
Problema Subsir crescator maximal Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <bits/stdc++.h>
#include <cstring>
# define pb push_back
#define nmax 100001
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
int n,i,a[nmax],poz[nmax],sol[nmax],k,st,dr,mij,j,kk,pozz;
vector <int> d;

int main()
{
    in>>n;
    for(i=1; i<=n; i++)
        in>>a[i];


    k=0;
    d.pb(a[1]);
    poz[1]=0;
    for(i=2; i<=n; i++)
    {
        if(a[i]>d[k])
        {
            k++;
            d.pb(a[i]);
            poz[i]=k;
        }
        else
        {
            pozz=upper_bound(d.begin(),d.end(),a[i])-d.begin();
            d[pozz]=a[i];
            poz[i]=pozz;
        }

    }
    out<<k+1<<"\n";
    kk=k;
    j=n;
    while(k>=0)
    {
        while(poz[j]!=k)
            j--;
        sol[k]=j;
        k--;
    }
    for(i=0; i<=kk; i++)
        out<<a[sol[i]]<<" ";
    return 0;
}