Cod sursa(job #2644546)

Utilizator NeacsuMihaiNeacsu Mihai NeacsuMihai Data 24 august 2020 21:13:30
Problema Subsir 2 Scor 45
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int v[5001], o[5001], h[5001];

int main()
{
    int n, i, k, t, p, u, mij, aux, max1;

    fin>>n;

    for(i=1; i<=n; i++)
    {
        fin>>v[i];
    }

    k=0;
    for(i=1; i<=n; i++)
    {
        p=1;
        u=k;

        if(v[i]>=o[k])
        {
            k++;
            t=k;
        }

        else while(p<=u)
        {
            mij=(p+u)/2;

            if(v[i]<o[mij])
            {
                t=mij;
                u=mij-1;
            }

            else p=mij+1;
        }

        o[t]=v[i];
        h[i]=t;
    }

    fout<<k<<"\n";

    for(i=n; i>=1; i--)
    {
        if(h[i]==k)
        {
            aux=i;
            break;
        }
    }

    max1=k;
    k=0;
    for(i=aux; i>=1 && max1>0; i--)
    {
        if(h[i]==max1)
        {
            k++;
            o[k]=i;

            max1--;
        }
    }

    for(i=k; i>=1; i--)
    {
        fout<<o[i]<<' ';
    }


}