Szczegółowe omówienie zadania Porządek:
Link do powyższego omówienia zadania Porządek:
https://youtu.be/3E_EBxTygpo?t=2348
Początek omówienia rozwiązania optymalnego:
https://youtu.be/3E_EBxTygpo?t=3469
——-
Link do treści zadania Porządek:
—–
Zadanie Porządek to najtrudniejsze zadanie z II etapu VII Olimpiady Informatycznej Gimnazjalistów – poprzednika Olimpiady Informatycznej Juniorów.
Link do wszystkich zadań z Olimpiady Informatycznej Juniorów:
——
Zadanie Porządek wymaga wykorzystania sum prefiksowych.
–
Szczegółowe wytłumaczenie czym są sumy prefiksowe poprzez quiz:
https://youtu.be/3E_EBxTygpo?t=305
https://youtu.be/3E_EBxTygpo?t=664
https://youtu.be/3E_EBxTygpo?t=945
–
https://youtu.be/3E_EBxTygpo?t=305
https://youtu.be/3E_EBxTygpo?t=664
https://youtu.be/3E_EBxTygpo?t=945
–
Wytłumaczenie programistyczne czym są sumy prefiksowe:
https://youtu.be/3E_EBxTygpo?t=1083
https://youtu.be/3E_EBxTygpo?t=1083
———-
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_DLUGOSC_OGRODU = 1e6+7;
long long int ile_par_do_tego_miejsca [MAX_DLUGOSC_OGRODU];
long long int ile_nasturcji_od_1 [MAX_DLUGOSC_OGRODU];
long long int ile_rudbekii_od_1 [MAX_DLUGOSC_OGRODU];
int main() {
string kwiaty;
int ile_kwiatow, ile_pytan;
int odkad, dokad;
int ile_rudbekii;
int i;
long long int odpowiedz, ile_par_pomiedzy;
cin >> ile_kwiatow;
cin >> kwiaty;
kwiaty = " " + kwiaty;
for (i=1; i<=ile_kwiatow; ++i) {
ile_nasturcji_od_1[i] = ile_nasturcji_od_1[i-1];
if ( kwiaty[i] == 'N' )
++ile_nasturcji_od_1[i];
}
for (i=1; i<=ile_kwiatow; ++i) {
ile_rudbekii_od_1[i] = ile_rudbekii_od_1[i-1];
if ( kwiaty[i] == 'R' )
++ile_rudbekii_od_1[i];
}
for (i=1; i<=ile_kwiatow; ++i) {
ile_par_do_tego_miejsca[i] = ile_par_do_tego_miejsca[i-1];
if ( kwiaty[i] == 'N' )
ile_par_do_tego_miejsca[i] = ile_par_do_tego_miejsca[i] + ile_rudbekii_od_1[i];;
}
cin >> ile_pytan;
for (i=1; i<=ile_pytan; ++i) {
cin >> odkad;
cin >> dokad;
ile_par_pomiedzy = ile_rudbekii_od_1[odkad-1] *
(ile_nasturcji_od_1[dokad] - ile_nasturcji_od_1[odkad-1]);
odpowiedz = ile_par_do_tego_miejsca[dokad] - ile_par_do_tego_miejsca[odkad-1]
- ile_par_pomiedzy;
cout << odpowiedz << "\n";
}
return 0;
}
Kod C++ programu Porządek, który jest omówiony w powyższym filmie i który otrzymuje 100%