Clasa a IX-a · Tablouri unidimensionale (vectori)Read in English

Maximul și pozițiile pe care apare în C++

În engleză: The maximum and the positions where it appears

O(n)C++1750 de linii1 exemplu

Ideea

Spre deosebire de un șir citit pe rând, un vector poate fi parcurs de mai multe ori: la prima parcurgere aflăm maximul, la a doua afișăm toate pozițiile pe care apare.

Descrierea în engleză

Unlike a sequence read one value at a time, an array can be traversed several times: in the first pass we find the maximum, in the second we print every position where it appears.

Complexitate
O(n)
Clasa
Clasa a IX-a (Grade 9)

Exemple

Exemplul 1

Intrare

6
4 9 2 9 1 9

Ieșire așteptată

9
2 4 6

Codul C++

Codul complet, cu comentarii în română. Îl poți modifica liber și îl poți reseta oricând.

maximul-si-pozitiile-lui.cpp
/*
 * Titlu: Maximul și pozițiile pe care apare
 * Clasa: 9
 * Capitol: Tablouri unidimensionale (vectori)
 * Descriere: Spre deosebire de un șir citit pe rând, un vector poate fi
 *            parcurs de mai multe ori: la prima parcurgere aflăm maximul, la a
 *            doua afișăm toate pozițiile pe care apare.
 * Complexitate: O(n)
 *
 * Exemplu
 * Intrare:
 * 6
 * 4 9 2 9 1 9
 * Ieșire:
 * 9
 * 2 4 6
 */
#include <iostream>
using namespace std;

int v[1001];

int main()
{
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> v[i];
    }
    int maxim = v[1];
    for (int i = 2; i <= n; i++)
    {
        if (v[i] > maxim)
        {
            maxim = v[i];
        }
    }
    cout << maxim << '\n';
    for (int i = 1; i <= n; i++)
    {
        if (v[i] == maxim)
        {
            cout << i << ' ';
        }
    }
    cout << '\n';
    return 0;
}

Rulează pe un g++ adevărat (C++17, -O2) prin Compiler Explorer. Programele trebuie să se termine repede: există o limită de timp.