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.
/*
* 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.