Szczegółowe omówienie zadania Sygnał ze sparingu Olimpiady Informatycznej Juniorów:
https://youtu.be/f0elTQkIyN0?t=154
https://youtu.be/f0elTQkIyN0?t=154
Link do contestu stałego gdzie można wrzucać rozwiązania zadania Klub Księgarza:
–
Zadanie Sygnał to proste zadanie, które wymusza pamiętanie liczby elementów i używa do tego specjalnej struktury: map.
–
Zadanie Sygnał pochodzi ze sparingu Olimpiady Informatycznej Juniorów.
To proste zadanie rozgrzewkowe i chcąc startować w Olimpiadzie musisz je zrobić!
Jak się uczyć na podstawie takiego zadania?
https://tiny.pl/7x1gg
——-
Kod C++ programu Sygnał, który jest omówiony w powyższym filmie i który otrzymuje 100%
–
#include <bits/stdc++.h>
using namespace std;
const int MAX_LICZBA_KANALOW = 5e5 + 7; //5*10^5 + 7 = 500000+7;
int kanaly[MAX_LICZBA_KANALOW];
map<int, long long> ile_razy_wystapil_kanal;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int ile_domow, odlegosc;
int numer_do_usuniecia;
long long wynik = 0;
cin >> ile_domow >> odlegosc;
for(int i=0; i<ile_domow; i++)
cin >> kanaly[i];
for(int i=0; i<ile_domow; i++) {
numer_do_usuniecia = i - odlegosc - 1;
if(numer_do_usuniecia >= 0)
--ile_razy_wystapil_kanal [ kanaly[numer_do_usuniecia] ];
wynik += ile_razy_wystapil_kanal [ kanaly[i] ];
++ile_razy_wystapil_kanal [ kanaly[i] ];
}
cout << wynik << "\n";
}
Link do pliku z kodem C++ zadania Sygnał