Cod sursa(job #1785928)

Utilizator dago28Stoican Dragos dago28 Data 22 octombrie 2016 09:53:12
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <fstream>

using namespace std;


void Citire (int a[100000], int &n)
{
    ifstream f("scmax.in");
    ofstream g("scmax.out");
    f>>n;
    for (int i=0; i<n; i++)
        f>>a[i];
}


void ConstruireSir (int a[100000], int b[100000], int n, int &maxib,int &maxb2)
{
    int maxi=a[n-1],li=1;
    b[n-1]=li;
    for (int i=n-2; i>=0; i--)
    {
        if (a[i]<maxi)
        {
            li++;
            b[i]=li;
            maxi=a[i];
            maxib=i;
            maxb2=b[i];
        }
        else if (a[i]==maxi)
            b[i]=li;
        else b[i]=1;
    }
}


void Afisare (int a[100000],int b[100000],int n,int &maxib)
{
    int maxc=maxib,i;
    for (i=maxib;i<n;i++)
    {
        if (a[maxc]<a[i])
        {
            cout<<a[maxc]<<" ";
            maxc=i;
        }
    }
    if (a[maxc]<=a[i-1])
    {
        cout<<a[maxc]<<" ";

    }
}


int main()
{
    int a[100000],b[100000]= {0},n,maxib,maxib2;
    Citire(a,n);
    ConstruireSir(a,b,n,maxib,maxib2);
    cout<<maxib2<<endl;
    Afisare (a,b,n,maxib);


    return 0;
}