Park – Omówienie zadania z Olimpiady Informatycznej Juniorów

Szczegółowe omówienie zadania Park.
To zadanie z Olimpiady Informatycznej Juniorów w którym liczy się tylko pomysł. Zadanie pokazuje moc algorytmiki która przyspiesza działanie programów:

Link do powyższego omówienia zadania Park:
https://youtu.be/qVgwgwmozcs?t=1188
Zadanie Park wymaga jedynie prostego zauważenia że nie musimy wszystkiego liczyć  z lewej i prawej strony dla każdej góry. Możemy po prostu jednym przejściem znaleźć maksymalny wierzchołek z lewej i prawej strony.
Zadanie Park pochodzi z poprzednich edycji Olimpiady Informatycznej Gimnazjalistów, poprzednika Olimpiady Informatycznej Juniorów:
To piękne zadanie które pokazuje
   * Możemy walczyć o dobry wynik na Olimpiadzie Informatycznej
   * Jest wielka moc w algorytmice!
Jak się uczyć na podstawie tego zadania?
https://youtu.be/QgLyXYmFQeU?t=2019

——-


#include <bits/stdc++.h>
using namespace std;
const int MAX_LICZBA_PUNKTOW = 1e6 + 7;
int punkty [MAX_LICZBA_PUNKTOW];
int max_wys_na_lewo [MAX_LICZBA_PUNKTOW];
int max_wys_na_prawo [MAX_LICZBA_PUNKTOW];
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int i;
int liczba_punktow;
int max_wysokosc;
cin >> liczba_punktow;
for (i=1; i<=liczba_punktow; ++i)
cin >> punkty[i];
max_wysokosc = 0;
for (i=1; i<=liczba_punktow; ++i) {
if ( punkty[i] > max_wysokosc )
max_wysokosc = punkty[i];
max_wys_na_lewo[i] = max_wysokosc;
}
max_wysokosc = 0;
for (i=liczba_punktow; i>=1; --i) {
    if ( punkty[i] > max_wysokosc )
max_wysokosc = punkty[i];
max_wys_na_prawo[i] = max_wysokosc;
}
for (i=1; i<=liczba_punktow; ++i)
cout << max_wys_na_lewo[i] << " " << max_wys_na_prawo[i] << "\n";
return 0;
}
Kod C++ programu Park, który jest omówiony w powyższym filmie i który otrzymuje 100% 

Nie dodano jeszcze komentarza, rozpocznij dyskusję pierwszy.

Dodaj komentarz