Cod sursa(job #2864227)

Utilizator RK13Barbu Eduard RK13 Data 7 martie 2022 18:21:15
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include<bits/stdc++.h>

using namespace std;

ifstream f("scmax.in");
ofstream g("scmax.out");

int v[100001],poz[100001],sol[100001],n;//poz=pozitia valorilor din subsirul cautat



int main()
{f>>n;
int i;
for (i=1;i<=n;i++) f>>v[i];
int st=1,dr,mij,p,l=0;
for (i=1;i<=n;i++) {st=1;
                        dr=l;
                       while (st<=dr) {mij=(st+dr)/2;
                                        if (v[poz[mij]]<v[i]) st=mij+1;
                                            else dr=mij-1;
                                        }
                        p=st;
                        if (p>l) l=p;
                        poz[p]=i;
                        sol[i]=poz[p-1];
                        //for (int i=1;i<=l;i++) cout<<poz[i]<<' ';
                        //cout<<'\n';
                       }

g<<l<<'\n';
for (int i=1;i<=l;i++) g<<v[poz[i]]<<' ';
}