Sejf – Omówienie zadania – Na później

Szczegółowe omówienie zadania Sejf:

Link do powyższego omówienia zadania Sejf: https://youtu.be/JJzOAD4SBpc?t=5440
Omówienie kodu zadania Sejf: https://youtu.be/JJzOAD4SBpc?t=6293
Link do treści zadania Sejf i możliwości umieszczania rozwiązań: https://szkopul.edu.pl/problemset/problem/Plha_6BH8_14ZptrZOdschts/site

Zadanie Sejf to zadanie na pomysł / technikę obliczania “na później”: https://youtu.be/JJzOAD4SBpc?t=5886

To zadanie wymaga po prostu symulacji procesu i zauważenia, że niczego nie musimy robić dopóki nas nie zapytają. A wówczas również łatwo jesteśmy w stanie obliczyć wymagane wartości:  https://youtu.be/JJzOAD4SBpc?t=6443


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 rozwiązaniami: https://oki.org.pl/lista-zadan-materialy.php
Samouczek – przygotowanie do Olimpiad: https://oki.org.pl/tutorial/

Zajęcia: https://oki.org.pl/harmonogram-zajec/
Informacje o zajęciach: https://oki.org.pl/newsletter.php

Warto startować w Olimpiadzie Informatycznej!
https://youtu.be/K7fZfJ8nN6A?t=109


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


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

const int MAXN = 1e6 + 7;

int wiersz[MAXN];
int kolumna[MAXN];

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

	int n, m;
	cin >> n >> m;
	for (int i = 1; i <= n; ++i)
		wiersz[i] = kolumna[i] = i;
	for (int i = 1; i <= m; ++i) {
		char typ;
		int a, b;
		cin >> typ >> a >> b;
		if (typ == 'W')
			swap(wiersz[a], wiersz[b]);
		if (typ == 'K')
			swap(kolumna[a], kolumna[b]);
		if (typ == 'P')
			cout << (long long)n*(wiersz[a] - 1) + kolumna[b] << '\n';
	}
	return 0;
}
Kod C++ programu "Sejf", który jest omówiony w powyższym filmie i który otrzymuje 100%

 


Kod Python programu Sejf, który otrzymuje 100%:

def solve():
	n, m = map(int, input().split())
	wiersz = [i for i in range(n+1)]
	kolumna = [i for i in range(n+1)]
	for i in range(m):
		typ, a, b = input().split()
		if (typ == 'W'):
			wiersz[int(a)], wiersz[int(b)] = wiersz[int(b)], wiersz[int(a)]
		if (typ == 'K'):
			kolumna[int(a)], kolumna[int(b)] = kolumna[int(b)], kolumna[int(a)]
		if (typ == 'P'):
			print(n*(wiersz[int(a)] - 1) + kolumna[int(b)])

solve()

Nie dodano jeszcze komentarza, rozpocznij dyskusję pierwszy.

Dodaj komentarz