Cod sursa(job #2085164)

Utilizator BovisioNitica Ionut Bogdan Bovisio Data 9 decembrie 2017 19:35:01
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <cstdio>

using namespace std;

int n,v[100003],best[100003];

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

void Read()
{
    fscanf(f1,"%i",&n);
    for(int i=1;i<=n;i++)
        fscanf(f1,"%i",&v[i]);

}

void Subsir()
{
    int max=-1,dubluri = 0;
    best[1] = 0;
    for(int i=2;i<=n;i++)
    {
        if(v[i] != v[i-1])
        {
            if(v[i] > v[i-1])
                best[i] = best[i-1] + 1;
            if(v[i] < v[i-1])
                best[i] = 0;
        }
        else
        {
            best[i] = best[i-1];
            dubluri ++;
        }
    }

    for(int i=1;i<=n;i++)
    {
        if(max < best[i])
        {
            max = i;
        }
    }
    fprintf(f2,"%i\n",best[max]+1);
    for(int i=max-best[max]-dubluri;i<=max;i++)
    {
        if(v[i] != v[i-1])
            fprintf(f2,"%i ",v[i]);
    }
}

int main()
{
    Read();
    for(int i=1;i<=n;i++)
        best[i] = 0;
    Subsir();
    return 0;
}