Cod sursa(job #2793691)

Utilizator mihnea03Ciocioiu Mihnea mihnea03 Data 3 noiembrie 2021 21:31:29
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#define dim 1010
using namespace std;
int a[dim];
int d[dim];
int t[dim];
int i,n,u,st,dr,sol=1;

ifstream fin("sclm.in");
ofstream fout("sclm.out");

void afisare (int nod) {
    if (t[nod]!=0) afisare(t[nod]);
    fout<<nod<<" ";
}

int main() {
    fin>>n;
    for (i=1;i<=n;i++) {
        fin>>a[i];
    }
    d[++u]=1;
    for (i=2;i<=n;i++) {///caut cel mai din dreapta numar mai mic ca a[i]
        st=1;
        dr=u;
        while (st<=dr) {
            int mid=(st+dr)/2;
            if (a[i]>a[d[mid]]) st=mid+1;
            else dr=mid-1;
        }
        ///rezultatul e in d[dr]
        t[i]=d[dr];
        d[dr+1]=i;
        if (dr==u) {
            u++;
            sol=i;
        }
    }
    fout<<u<<"\n";
    afisare (sol);
    return 0;
}