Cod sursa(job #2063175)

Utilizator alexilasiAlex Ilasi alexilasi Data 11 noiembrie 2017 10:02:10
Problema Subsir 2 Scor 56
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#include <climits>
#define inf INT_MAX
using namespace std;

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

long long n,i,a[5101],l[5101],j,Max,k,poz,Min,last;

int main()
{
    fin>>n;
    for(i=1; i<=n; i++)
        fin>>a[i];
    for(i=n; i>0; i--)
    {
        for(j=i+1,Min=inf; 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;
    }
    for(i=1,Min=inf,Max=inf; i<=n; i++)
    {
        if(a[i]<Min)
        {
            Min=a[i];
            Max=min(Max,l[i]);
        }
    }
    fout<<Max<<'\n';
    for(k=Max; k>0; k--)
    {
        Min=inf;
        for(i=poz+1; i<=n; i++)
            if(l[i]==k&&a[i]<Min&&a[i]>last)
            {
                Min=a[i];
                poz=i;
            }
        fout<<poz<<" ";
        last=Min;
    }
    return 0;
}