Cod sursa(job #2730228)

Utilizator emanuel2186Lugojan Emanuel emanuel2186 Data 25 martie 2021 22:57:51
Problema Subsir crescator maximal Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <bits/stdc++.h>
#define Nmax 100005
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int L[Nmax];
int v[Nmax];
int N;
int maxim[Nmax];
void caut(int x, int st, int dr)
{
    int mij = (st + dr) / 2;

}
void afisare()
{
    fout<<L[N]<<"\n";
    for(int i=1; i<=L[N]; i++)
        fout<<maxim[i]<<" ";
}
void rezolvare()
{
    int caut = L[N];
    for(int i=1; i<=caut; i++)
        maxim[i] = -1;
    maxim[ caut + 1 ] = INT_MAX;
    for(int i=N; i>=1; i--)
    {
        if(L[i] == caut - 1)
        {
            caut--;
        }
        if(v[i] > maxim[caut] && v[i] < maxim[caut + 1])
        {
            maxim[caut] = v[i];
        }
    }
    afisare();
}
void citire()
{
    fin>>N;
    for(int i=1; i<=N; i++)
    {
        fin>>v[i];
        if(i == 1)
            L[i] = 1;
        else
        {
            if(v[i] > v[i-1])
                L[i] = L[i-1] + 1;
            else
                L[i] = L[i - 1];
        }
    }
    rezolvare();
}
int main()
{
    citire();
    return 0;
}