Cod sursa(job #1785969)

Utilizator gabriela.leontewGabriela Leonte gabriela.leontew Data 22 octombrie 2016 10:30:42
Problema Subsir crescator maximal Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include <iostream>
#include <fstream>
using namespace std;
int a[100005],n,c[100005],p=0;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
void citire()
{

    fin>>n;
    for(int i=0; i<n; i++)
        fin>>a[i];
}
void generare()
{
    int b[100005];
    b[n-1]=1;
    int contor;
    int maxi=0,m;
    for(int i=n-2; i>=0; i--)
    {
        if(a[i]<a[i+1])
        {
            b[i]=2;
            contor=a[i+1];
            for(int j=i+2; j<n; j++)
                if (a[j]>contor)
                {
                    b[i]++;
                    contor=a[j];

                }
                if(b[i]>maxi) {maxi=b[i];m=i;}
        }
        else
        {
            b[i]=1;
            for(int j=i+1; j<n; j++)
                if(a[j]>a[i]) b[i]++;
            if(b[i]>maxi) {maxi=b[i];m=i;}
        }
    }
    c[p++]=a[m];
    int l=1;
    for(int i=m+1; i<n; i++)
    {
        if(b[i]<maxi)
        {
            maxi=b[i];l++;
            c[p++]=a[i];
        }
    }
    fout<<l<<endl;
    for(int i=0;i<p;i++)
        fout<<c[i]<<" ";
}
int main()
{
    citire();
    generare();
    return 0;
}