Cod sursa(job #3262867)

Utilizator vicvicGriga Victor-Cristian vicvic Data 11 decembrie 2024 19:50:59
Problema Subsir 2 Scor 45
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("subsir2.in");
ofstream g ("subsir2.out");
int n, v[5005], dp[5005], mn[5005], l[5005], lmx, rez[5005];
void add (int val, int ind)
{
    if (lmx==0 || dp[lmx]<=val)
    {
        dp[++lmx]=val;
        rez[lmx]=ind;
        return;
    }
    int st=1, dr=lmx, poz=0;
    while (st<=dr)
    {
        int mij = (st+dr) >> 1;
        if (dp[mij]<=val)
        {
            poz=mij;
            st=mij+1;
        }
        else dr=mij-1;
    }
    dp[poz+1]=val;
    mn[poz+1]=val;
    rez[poz+1]=ind;
    return;
}
int main()
{
    for (int i=1;i<=5000;i++)
    {
        mn[i]=1e9;
    }
    f >> n;
    for (int i=1;i<=n;i++)
    {
        f >> v[i];
        add (v[i], i);
    }
    g << lmx << "\n";
    for (int i=1;i<=lmx;i++)
    {
        g << rez[i] << " ";
    }
    return 0;
}