Cod sursa(job #2710888)

Utilizator VipioanaMirea Oana Teodora Vipioana Data 23 februarie 2021 12:33:20
Problema Subsir 2 Scor 45
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("subsir2.in");
ofstream g("subsir2.out");
int v[5001],l[5001],st[5001],sol[5001];
int cautb(int ls, int ld, int x)
{
    int mij;
    while(ls<=ld)
    {
        mij=(ls+ld)/2;
        if(st[mij]<=x)
            ls=mij+1;
        else
            ld=mij-1;
    }
    return ls;
}
int main()
{
    int n,i,lm,p,k;
    f>>n;
    ///citire si copie de vector
    for(i=0; i<n; i++)
        f>>v[i];
    lm=0;
    for(i=0; i<n; i++)
    {
        p=cautb(0,lm-1,v[i]);
        st[p]=v[i];
        if(p==lm)
            lm++;
        l[i]=p+1;
    }
    g<<lm<<'\n';
    i=n-1;
    k=0;
    while(lm!=0)
    {
        if(l[i]==lm)
        {
            sol[k++]=i+1;
            lm--;
        }
        i--;
    }
    for(i=k-1; i>=0; i--)
        g<<sol[i]<<" ";
    return 0;
}