Cod sursa(job #2063277)

Utilizator DavidDragulinDragulin David DavidDragulin Data 11 noiembrie 2017 10:31:53
Problema Subsir 2 Scor 91
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
ifstream fin("subsir2.in");
ofstream fout("subsir2.out");
int i,j,n,a[5005],l[5005],nr,lmax,imax,nri,nrmin,Min;
int main()
{
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>a[i];
    for(i=n; i>0; i--)
    {
        for(j=i+1,Min=1e9; j<=n; j++)
            if(a[j]>=a[i]&&a[j]<Min)
            {
                Min=min(Min,a[j]);
                l[i]=min(l[i],l[j]+1);
                if(!l[i])l[i]=l[j]+1;
            }
        if(l[i]==0)l[i]=1;
        lmax=max(lmax,l[i]);
    }
     for(i=1,Min=1e9; i<=n; i++)
    {
        if(a[i]<Min)
        {
            Min=a[i];
            lmax=min(lmax,l[i]);
        }
    }
    fout<<lmax<<'\n';
    nri=0;
    while(lmax>=1)
    {
        nr=1e9;
        imax=nri;
        for(i=imax+1;i<=n;i++)
        {
                if(l[i]==lmax&&nr>a[i]&&a[i]>=a[imax])
                {
                    nr=a[i];
                    nri=i;
                }
                else
                    if(a[i]>=a[imax]&&nr>a[i])
                        nr=a[i];
        }
        fout<<nri<<" ";
        lmax--;
    }
    return 0;
}