Cod sursa(job #2494415)

Utilizator david16Leahu David david16 Data 17 noiembrie 2019 20:21:30
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.2 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream fin ("scmax.in");
ofstream fout ("scmax.out");

long n, j, x, y, nr=1, maxim;

struct tip
{
    long numar, pozitie;
}sir[100000];

void swp(tip &xp, tip &yp)
{
    tip aux = xp;
    xp = yp;
    yp = aux;
}

void ordonare()
{
    for (int i=0; i<n-1; i++)
        for (int j=i+1; j<n; j++)
            if (sir[j].numar<sir[i].numar)
                swp(sir[j], sir[i]);
}

void elim()
{
    tip aux[n];

    int j = 0;
    for (int i=0; i<n-1; i++)
        if (sir[i].numar != sir[i+1].numar)
            aux[j++] = sir[i];

    aux[j++] = sir[n-1];

    for (int i=0; i<j; i++)
        sir[i] = aux[i];

    n=j;
}

void sirMax ()
{
    for (int i=0; i<n; i++)
    {
        if (sir[i].pozitie<sir[i+1].pozitie)
            nr++;
        else
        {
            if (maxim<nr)
                maxim=nr;
            nr=1, j=i;
        }
    }
    for (int i=(n-j)-1; i<maxim; i++)
        cout << sir[i].numar << ' ';
}

int main()
{
    cin >> n;

    for (int i=0; i<n; i++)
        cin >> sir[i].numar, sir[i].pozitie=i;

    ordonare();
    elim();
    sirMax();

    return 0;
}