Cod sursa(job #2056183)

Utilizator Valentin0709Datcu George Valentin Valentin0709 Data 4 noiembrie 2017 09:45:46
Problema Subsir 2 Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<stdio.h>
#include<algorithm>
using namespace std;

FILE*f=fopen("subsir2.in","r");
FILE*g=fopen("subsir2.out","w");

int n,lmn,ip,l[10005],v[10005];

void citire() {
    int i;

    fscanf(f,"%d",&n);
    for(i=1;i<=n;i++) fscanf(f,"%d",&v[i]);
}

void solve() {
    int i,j,mn,mnnr;

    l[n]=1; lmn=0; ip=1;
    for(i=n-1;i>=1;i--) {
        mn=100000000; mnnr=10000000;
        for(j=i+1;j<=n;j++) {
           if(v[j]<mnnr) mnnr=v[j];
           if((v[j]<=mnnr||mnnr==0)&&v[i]<v[j])
                mn=min(mn,l[j]);
        }
        l[i]=mn+1;
        if(l[i]>lmn&&l[i]!=100000001) {lmn=l[i]; ip=i;}
    }
}

void afis() {
    int u=0,i;

    fprintf(g,"%d\n",lmn);
    for(i=1;i<=n;i++) {
        if(l[i]==lmn&&v[i]>u) {fprintf(g,"%d ",i); u=v[i]; lmn--;}
    }
}

int main() {

    citire();
    solve();
    afis();

    return 0;
}