Cod sursa(job #1857359)

Utilizator leonard.david42Bereholschi Leonard David leonard.david42 Data 26 ianuarie 2017 09:05:56
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <cstdio>
#include <fstream>
#include <stdio.h>
using namespace std;

FILE *in = fopen("scmax.in","r");
FILE *out= fopen("scmax.out","w");

int n,lmax,p,l[100001], a[100001];

void dinamica()
{
    int max;
    l[n]=1;
    for(int i=n-1;i>=1;i--)
    {
        max=0;
        for(int j=i+1;j<=n;j++)
            if(l[j]>max && a[i]<a[j])
                max=l[j];
        l[i]=max+1;
        if(lmax<l[i])
            lmax=l[i];
    }
}
void drum()
{
    int t=0;
    p=1;
    fprintf(out,"%d \n",lmax);
    do{
        while(l[p]!=lmax || a[t]>a[p])
            p++;
        fprintf(out,"%d ",a[p]);
        t=p;
        lmax--;
    }while(lmax);
}
int main()
{
    fscanf(in,"%d", &n);
    for(int i=1;i<=n;i++)
        fscanf(in,"%d", &a[i]);
    dinamica();
    drum();
}