Cod sursa(job #3341451)

Utilizator bagae123Burlacu Andrei bagae123 Data 19 februarie 2026 16:55:03
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
#include<bits/stdc++.h>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
const int NMAX=1e5;
int v[NMAX+5];
vector<int>sol;
int cautbin(int val,vector<int>& a)
{
    int gasit=-1;
    int st=0;
    int dr=a.size()-1;
    while(st<=dr)
    {
        int mij=st+((dr-st)>>1);
        if(a[mij]>=val){dr=mij-1;gasit=mij;}
        else st=mij+1;
    }

    return gasit;
}
int main()
{
    int n;
    fin>>n;

    for(int i=1;i<=n;i++)
    {
        fin>>v[i];
    }
    sol.push_back(v[1]);
    for(int i=2;i<=n;i++)
    {

        if(v[i]>sol.back())
        {
            sol.push_back(v[i]);
        }
        else{
        if(cautbin(v[i],sol)!=-1)
        {
            int poz=cautbin(v[i],sol);
            sol[poz]=v[i];
        }
        }
    }
    fout<<sol.size()<<"\n";
    for(int i=0;i<sol.size();i++)
    {
        fout<<sol[i]<<" ";
    }
    return 0;
}