Skrzyżowanie – Finał Olimpiady Informatycznej Gimnazjalistów – Omówienie zadania

Szczegółowe omówienie zadania Skrzyżowanie:

Link do powyższego omówienia zadania Skrzyżowanie:
https://youtu.be/Rz17jmhgoMM?t=3508

Omówienie kodu zadania Skrzyżowanie:
https://youtu.be/Rz17jmhgoMM?t=5183

Link do treści zadania Skrzyżowanie oraz możliwości umieszczania rozwiązań:
https://szkopul.edu.pl/problemset/problem/skrzyzowanie/site/


Rozwiązanie zadania Skrzyżowanie wymaga jedynie pomysłu.
Jest kwestia implementacyjna – jak pamiętać i wyszukiwać odległości samochodów która można rozwiązać na 3 sposoby:
https://youtu.be/Rz17jmhgoMM?t=4680


Zadanie Skrzyżowanie pochodzi z finału 11 Olimpiady Informatycznej Gimnazjalistów.

Zadanie Omawia Tomek Kwiatkowski – finalista Olimpiady Informatycznej:
https://youtu.be/2ZL03PfmQiI?t=2175


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


Kod C++ programu Skrzyżowanie, który jest omówiony w powyższym filmie i który otrzymuje 100%


#include <bits/stdc++.h>
using namespace std;

const int MAXN = 1000*1000 + 7;

bool samochod[2 * MAXN];

int main()
{
	ios_base::sync_with_stdio(0), cin.tie(0);

	int n; // liczba pasow ul. Poziomkowej
	int	m; // liczba pasow ul. Truskawkowej
	int	p; // liczba samochodow na ul. Poziomkowej
	int	t; // liczba samochodow na ul. Truskawkowej

	cin >> n >> m >> p >> t;

	for (int i = 1; i <= p; i++) {
		int nrPasa, czasPojawienia;
		cin >> nrPasa >> czasPojawienia;

		samochod[(nrPasa - czasPojawienia) + MAXN] = true;
	}

	int wynik = 0;
	for (int i = 1; i <= t; i++) {
		int nrPasa, czasPojawienia;
		cin >> nrPasa >> czasPojawienia;

		if (samochod[(nrPasa - czasPojawienia) + MAXN] == 0)
			wynik++;
	}

	cout << wynik << '\n';
	return 0;
}
Kod C++ programu Skrzyżowanie, który jest omówiony w powyższym filmie i który otrzymuje 100%

 

 

Nie dodano jeszcze komentarza, rozpocznij dyskusję pierwszy.

Dodaj komentarz