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
https://youtu.be/qVgwgwmozcs?t=1188
Link do treści zadania Park:
https://szkopul.edu.pl/problemset/problem/vFeShEOnczXpanZEaYQpDnus/site
https://szkopul.edu.pl/problemset/problem/vFeShEOnczXpanZEaYQpDnus/site
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
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%