Cod sursa(job #1754224)

Utilizator andreea_dumitrascuDumitrascu Andreea andreea_dumitrascu Data 7 septembrie 2016 18:06:42
Problema Subsir crescator maximal Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include <cstdio>
#include <vector>

using namespace std;

int n,a[4][100000],mem,p,u,pm,um,lmax,poz;

int main()
{
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    scanf("%d",&n);
    scanf("%d",&a[1][1]);
    a[2][1]=1;mem=a[1][1];p=1;a[3][1]=1;
    for(int i=2;i<=n;i++)
    {
        scanf("%d",&a[1][i]);
        if(a[1][i]>mem) a[2][i]=a[2][i-1]+1;
        else
        if(a[1][i]==mem) a[2][i]=a[2][i-1];
        else a[2][i]=1,p=i;
            /*u=i-1;
            if(u-p+1>lmax) lmax=u-p+1,um=u,pm=p;
            p=i;*/
        a[3][i]=p;
        mem=a[1][i];
    }
    for(int i=1;i<=n;i++)
        if(lmax<a[2][i]) lmax=a[2][i],poz=i;
    /*for(int i=1;i<=n;i++)
        printf("%d ",a[3][i]);*/
    printf("%d\n",lmax);
    poz=a[3][poz];mem=a[1][poz];
    printf("%d ",a[1][poz]);lmax--;
    for(int i=poz+1;lmax;i++)
    {
        //if(a[2][i]==lmax) return 0;
        if(a[1][i]>mem) printf("%d ",a[1][i]),lmax--;
        mem=a[1][i];
    }
    return 0;
}

/*
    scanf("%d",&n);
    scanf("%d",&x);
    v.push_back(x);
    for(int i=2;i<=n;i++)
    {
        scanf("%d",&y);
        if(y>x) v.push_back(y);
    }*/