Cod sursa(job #2224534)

Utilizator MoldooooooooMoldoveanu Stefan Moldoooooooo Data 24 iulie 2018 14:00:02
Problema Subsir 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <cstdio>
using namespace std;
int N, ElementsList[5005], i, j, LastElement[5005], ElementCount[5005], mx, maxpoz, maxim;
int main()
{
    freopen("subsir2.in", "r", stdin);
    freopen("subsir2.out", "w", stdout);
    scanf("%d", &N);
    for(i=1; i<=N; i++){
        scanf("%d", &ElementsList[i]);
    }
    ElementsList[0]=-2000000000;
    for(i=N; i>=0; --i){
            ElementCount[i]=mx=2000000000;
            for(j=i+1; j<=N; ++j){
                if(ElementsList[i]<=ElementsList[j] && ElementCount[i]>=ElementCount[j] && ElementsList[j]<mx){
                    LastElement[i]=j;
                    ElementCount[i]=ElementCount[j];
                }
                if(ElementsList[i]<=ElementsList[j] && ElementsList[j]<mx)mx=ElementsList[j];
            }
            if(!LastElement[i]){
                LastElement[i]=N+1;
                ElementCount[i]=0;
            }
            ElementCount[i]++;
    }
    printf("%d%c", ElementCount[0]-1, '\n');
    maxpoz=0;
    while(LastElement[maxpoz]!=N+1){
        printf("%d ", LastElement[maxpoz]);
        maxpoz=LastElement[maxpoz];
    }
    return 0;
}