Cod sursa(job #2722978)

Utilizator mihnea03Ciocioiu Mihnea mihnea03 Data 13 martie 2021 14:09:18
Problema Subsir crescator maximal Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#define dim 100010
using namespace std;
int a[dim];
int d[dim];
int i,n,u;

int main() {
    ifstream fin("scmax.in");
    ofstream fout("scmax.out");
    fin>>n;
    for (i=1;i<=n;i++) {
        fin>>a[i];
    }
    d[++u]=1;
    for (i=2;i<=n;i++) {
        int st=1;
        int dr=u;
        while (st<=dr) {///caut cel mai din dreapta element mai mic sau egal ca a[i]
            int mid=(st+dr)/2;
            if (a[d[mid]]<a[i]) {
                st=mid+1;
            }
            else {
                dr=mid-1;
            }
        }
        ///rezultatul se afla in st
        if (st==u+1) {
            d[++u]=i;
        }
        if (st==u) {
            d[u]=i;
        }
    }
    fout<<u<<"\n";
    for (i=1;i<=u;i++) {
        fout<<a[d[i]]<<" ";
    }
    return 0;
}