Cod sursa(job #1785955)

Utilizator luca_robertaLuca Roberta luca_roberta Data 22 octombrie 2016 10:23:48
Problema Subsir crescator maximal Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.31 kb
#include <iostream>
#include <fstream>

using namespace std;

void citire(int &n, int a[10000])
{
    ifstream f("scmax.in");
    f>>n;
    for(int i=0; i<n; i++)
        f>>a[i];
}

void generare(int n, int a[10000])
{
    ofstream g("scmax.out");
    int b[10000],var;
    b[n-1]=1;
    for(int i=n-2; i>=0; i--)
    {
        if(a[i]<a[i+1])
        {
            b[i]=2;
            var=a[i+1];
            for(int j=i+1; j<n; j++)
                if(a[j]>var)
                {
                    b[i]++;
                    var=a[j];
                }
        }
        else
        {
            b[i]=1;
            for(int j=i+2; j<n; j++)
                if(a[j]>a[i])
                    b[i]++;
        }
    }
    /*for(int i=0; i<n; i++)
    {
        g<<b[i]<<" ";
    }*/
    int max=0,poz,l=1,c[10000],p=0;
    for(int i=0; i<n; i++)
    {
        if(b[i]>max)
        {
            max=b[i];
            poz=i;
        }
    }
    c[p++]=a[poz];
    for(int i=poz+1; i<n; i++)
    {
        if(b[i]<max)
        {
            c[p++]=a[i];
            l++;
            max=b[i];
        }
    }
    g<<l<<endl;
    for(int i=0;i<p;i++)
        g<<c[i]<<" ";
}

int main()
{
    int n,a[10000];
    citire(n,a);
    generare(n,a);
    return 0;
}