Cod sursa(job #2656717)

Utilizator proflaurianPanaete Adrian proflaurian Data 8 octombrie 2020 15:33:16
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include<bits/stdc++.h>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");

const int  N=100100;

int n, i, A[N], P[N], V[N], D[N], lo, hi, mi, LM;

void print(int C);
int main()
{
    f>>n;
    for(i=1; i<=n; i++)
        f>>A[i];
    for(i=1; i<=n; i++)
    {
        lo=0;
        hi=LM+1;
        while(hi-lo>1)
        {
            mi=(lo+hi)/2;
            if(V[mi]<A[i])lo=mi;
            else hi=mi;
        }
        P[hi]=i;
        V[hi]=A[i];
        D[i]=P[lo];
        if(hi>LM)
            LM++;
    }
    g<<LM<<'\n';
    print(P[LM]);
    return 0;
}
void solve()
{

}
void print(int C)
{
    if(!C)return;
    print(D[C]);
    g<<A[C]<<' ';
}