Poprawiłem błędy, podane przez użytkownika obl. Jako osoba niedoświadczona założyłem, że przyjmują one domyślnie wartość 0. Tablicę też powinienem początkowo zapełnić zerami?
Ta linijka:
max(liczniki[przycisk-1], maksimum);
to tylko wynik mojego gapiostwa i tego, że pierwszy raz korzystałem z funkcji max/min.
Oto poprawiony kod:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n, m ,przycisk, maksimum{0}, minimum{0};
cin >> n >> m;
int liczniki[1000000];
for(int i=0; i<m; i++)
{
cin >> przycisk;
if(przycisk==n+1)
{
minimum=maksimum;
}
else
{
liczniki[przycisk-1] = max(minimum, liczniki[przycisk-1]);
liczniki[przycisk-1]++;
maksimum = max(liczniki[przycisk-1], maksimum);
}
}
for(int i=0; i<n; i++)
{
cout << max(minimum, liczniki[i]) <<" ";
}
return 0;
}
W zadaniu miałem sprecyzowane dane wejściowe, stąd ten zakres.
Treść zadania brzmi mniej więcej tak:
Tomek znalazł zabawkę, która ma n+1 przycisków. Nad każdym, poza ostatnim znajduję się licznik, początkowo wyzerowany. Naciskając dowolny z n przycisków wartość na licznik nad tym przyciskiem zwiększa się o 1. Natomiast przycisk n+1 sprawia, że wszystkie liczniki pokazują największą wartość z dotychczas pokazanych. Wiemy, które przyciski wciskał kolejno Tomek, a chcemy znać wartości liczników po zakończeniu zabawy.
Wejście:
Dwie liczby całkowite: n i m (1<=n, m<=1000000)
W drugim wierszu m liczb całkowitych oznaczających kolejne wciskane przez Tomka przyciski
Wyjście:
n liczb całkowitych oznaczających wartości kolejnych przycisków, po zakończeniu zabawy.
Przykład:
Wejście:
5 7
3 4 4 6 1 4 4
Wyjście:
3 2 2 4 2
Zadanie jest autorstwa pana Jacka Tomasiewicza.
Komunikat o błędzie wygląda zwyczajnie. Nie wiem czy uda się coś z niego odczytać: