Cod sursa(job #2647418)

Utilizator NeacsuMihaiNeacsu Mihai NeacsuMihai Data 4 septembrie 2020 15:19:57
Problema Subsir 2 Scor 45
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <iostream>
#include <fstream>

using namespace std;

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

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

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

    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];
        l[i]=t;
    }

    fout<<k<<"\n";

    aux2=k;

    k=0;
    for(i=n; i>=1 && aux2>0; i--)
    {
        if(l[i]==aux2)
        {
            k++;
            o[k]=i;

            aux2--;
        }
    }

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

}