Cod sursa(job #2967955)

Utilizator Cazacu2006RazvanRazvan Cazacu Cazacu2006Razvan Data 20 ianuarie 2023 14:33:54
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>

using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,a[100001],dp[100001],tata[100001],k;
void afisare(int k)
{
    if(k>0)
    {
        afisare(tata[k]);
        fout<<a[k]<<" ";
    }
}
int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
        fin>>a[i];
    for(int i=1;i<=n;i++)
    {
        int st=1,dr=k,mid=0,poz=0;
        while(st<=dr)
        {
            mid=(st+dr)/2;
            if(a[dp[mid]]>=a[i])
            {
                dr=mid-1;


            }
            else
            {
                poz=mid;
                st=mid+1;

            }
        }
        if(poz==k)
        {
            k++;
            dp[k]=i;
            tata[i]=dp[poz];
        }
        else
        {
            dp[poz+1]=i;
            tata[i]=dp[poz];
        }

    }
    fout<<k<<"\n";
    afisare(dp[k]);

    return 0;
}