Cod sursa(job #1145737)

Utilizator CostanMiriamCostan Miriam CostanMiriam Data 18 martie 2014 13:33:55
Problema Subsir 2 Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>

using namespace std;

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

int v[5005],l[5005],d[5005];
int n,i,j,minim,maxim,poz,Min,Max;

int main () {

    fin>>n;

    for (i=1;i<=n;i++){
        fin>>v[i];
        if (v[i]>Max)
            Max=v[i];
    }

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

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

    minim =n+1;
    for (i=1;i<=n;i++)
        if (d[i]==1 && l[i]<minim)
            minim=l[i];

    fout<<minim<<"\n";
    poz=1;
    for (i=minim;i>=1;i--) {
        Min=Max;
        for (j=poz;j<=n;j++) {
            if (d[j]==i && v[j]<Min){
                Min=v[j];
                poz=j+1;
            }
        }
        fout<<poz-1<<" ";
    }
    fout<<"\n";

    return 0;
}