Szczegółowe omówienie zadania Pionki:
Link do powyższego omówienia zadania Pionki:
https://youtu.be/HxbnveQd69I
Link do treści zadania Pionki:
https://szkopul.edu.pl/problemset/problem/ZhrqkG9W7TYF2VPrIuR1Ufry/site
Zadanie pochodzi z finałowego etapu XV Olimpiady Informatycznej Juniorów.
https://szkopul.edu.pl/task_archive/oig/
Warto startować w Olimpiadzie Informatycznej!
https://youtu.be/1qhkkV6YtE8?t=11
Zadanie wymaga jedynie prostego pomysłu:
Oddzielnie zbieramy pionki po X i Y. Zbieramy do kolumny gdzie jest najwięcej pionków. Analogicznie do rzędu z największą liczbą pionków.
Zadanie pochodzi z finału Olimpiady Informatycznej Juniorów choć wymaga jedynie programowania i powyższej prostej obserwacji.
Zadanie omawia Karol Pokorski, jeden z najlepszych nauczycieli algorytmiki, wychowawca wielu zwycięzców i medalistów Olimpiad Informatycznych, prowadzący zajęcia koła informatycznego we Wrocławiu oraz w internecie:
https://solve.edu.pl/~sparingi/
–
Jak się uczyć na podstawie tego zadania?
https://youtu.be/QgLyXYmFQeU?t=2019
Pamiętaj by zajrzeć max 1 raz – wtedy się rozwijasz:
https://youtu.be/pkLXuuOe_qA?t=3625
–
Lista zadań z Olimpiad i konkursów informatycznych z podziałem na kategorie i rozwiązaniami:
https://oki.org.pl/lista-zadan-materialy.php
Samouczek – przygotowanie do Olimpiad i konkursów informatycznych:
https://oki.org.pl/tutorial/
Kod C++ który otrzymuje 100%
#include <iostroeam> using namespace std; const int MAX_RZOZMIAR = 1e6 + 7; int ile_pionkow_w_kolumnie[MAX_RZOZMIAR]; int ile_pionkow_w_wierszu[MAX_RZOZMIAR]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int x, y, rozmiar_po_x, rozmiar_po_y; int ile_pionkow; int max_ilosc_pionkow_w_kolumnie, max_ilosc_pionkow_w_wierszu; char znak; cin >> rozmiar_po_y >> rozmiar_po_x; ile_pionkow = 0; max_ilosc_pionkow_w_kolumnie = max_ilosc_pionkow_w_wierszu = 0; for (y = 1; y <= rozmiar_po_y; y++) { for (x = 1; x <= rozmiar_po_x; x++) {
cin >> znak;
if (znak == '#') { ++ile_pionkow; ++ile_pionkow_w_wierszu[y]; ++ile_pionkow_w_kolumnie[x]; if (ile_pionkow_w_wierszu[y] > max_ilosc_pionkow_w_wierszu) max_ilosc_pionkow_w_wierszu = ile_pionkow_w_wierszu[y]; if (ile_pionkow_w_kolumnie[x] > max_ilosc_pionkow_w_kolumnie) max_ilosc_pionkow_w_kolumnie = ile_pionkow_w_kolumnie[x]; } } } cout << 2 * ile_pionkow - max_ilosc_pionkow_w_wierszu - max_ilosc_pionkow_w_kolumnie << "\n"; return 0; }