Cod sursa(job #2063398)

Utilizator AndreiD31Dragan Andrei AndreiD31 Data 11 noiembrie 2017 11:16:36
Problema Subsir 2 Scor 52
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <fstream>
#include <climits>
using namespace std;
ifstream f("subsir2.in");
ofstream g("subsir2.out");
long long n,i,v[5001],l[5001],ok,k,maxim,elem,minim,copie,j;
int main()
{
    f>>n;
    for(i=1; i<=n; i++)
        f>>v[i];

    for(i=n; i>=1; i--)
    {
        minim=INT_MAX;
        l[i]=INT_MAX;
        for(j=i+1; j<=n; j++)
            if(v[i]<=v[j]&&v[j]<minim&&l[j]+1<l[i])
            {
                minim=v[j];
                l[i]=l[j]+1;
            }
        if(l[i]==INT_MAX)l[i]=1;
    }
    maxim=INT_MAX;

    minim=INT_MAX;


    for(i=1; i<=n; i++)
    {
        if(v[i]<minim)
        {
            minim=v[i];
            maxim=min(maxim,l[i]);
        }
    }


    g<<maxim<<'\n';

    elem=INT_MIN;
    long long  poz=0;
    long long maxim1;
    while(maxim)
    {

        minim=INT_MAX;
        maxim1=INT_MAX;
        for(i=poz+1; i<=n; i++)
            if(l[i]==maxim&&v[i]>=elem&&v[i]<maxim1)
            {
                poz=i;
                minim=v[i];
                maxim1=v[i];
            }
            else if(v[i]>=elem&&v[i]<maxim1)maxim1=v[i];

        g<<poz<<" ";
        elem=v[poz];
        maxim--;


    }


    return 0;
}