Надіслати розв'язок

Бали: 40,00 (partial)
Time limit: 2.0s
Python 3 8.0s
Memory limit: 500M

Author:
Problem type
Allowed languages
Assembly, Awk, Brain****, C, C++, Java, mono C#, Pascal, Perl, Python, Sed, Text, vb

Степан, любитель настільних ігор, нещодавно відкрив для себе гру Robots. Гра складається з дошки з ~n~ рядків і ~m~ стовпців і одного робота. Поле (1, 1) є верхнім лівим полем дошки, тоді як поле (~n, m~) є нижнім правим.

На початку робот розташовується на якомусь полі ~(x,y)~ (~x~-й рядок, ~y~-й стовпець), і гравець може направляти його в одному з чотирьох напрямків: вгору, вниз, вліво або вправо. Залежно від обраного напрямку, він буде рухатися в цьому напрямку, поки не зустріне свою ціль або спеціальне поле на дошці. Якщо в будь-який момент він на краю дошки і хоче вийти з дошки, він обертається на іншу сторону дошки. Наприклад, якщо він знаходиться на полі (~n, 3~) і хоче рухатися вниз, він прибуде на поле (1, 3).

На дошці є три типи полів:

  • Порожнє поле - робот продовжує рух у тому ж напрямку
  • Поле повороту вліво - коли робот ступить на це поле, він поверне ліворуч на 90° і продовжить рух
  • Поле повороту вправо - коли робот наступить на це поле, він повернеться вправо на 90° і продовжить рух

Більшість полів на дошці порожні, лише ~k~ з них є полями повороту ліворуч або праворуч.

Гра складається з ~q~ раундів. В ~і~-му раунді гри робот буде розміщений на полі (~a_i,b_i~). Мета полягає в тому, щоб досягти поля (~c_i,d_i~), використовуючи мінімальну кількість ходів, або визначити, що це зробити неможливо.

Погравши в цю гру кілька разів, Степан зрозумів, що вона складніша, ніж здавалося спочатку. Ось чому йому зараз потрібна ваша допомога. Допоможіть йому визначити мінімальну кількість ходів, необхідну для кожного раунду гри!

Примітка: якщо робот починає або закінчує свій шлях на полі повороту ліворуч або праворуч, цей поворот не зараховується.

Формат вхідних даних

У першому рядку записано цілі числа ~n~, ~m~ і ~k~ (~1 ≤ n, m ≤ 10^6~, ~0 ≤ k ≤ 10^5~), кількість рядків, стовпців і непорожніх полів на дошці.

~i~-й із наступних ~n~ рядків містить цілі числа ~x_i,y_i~ та символ ~s_i~ (~1 ≤ x_i ≤ n~,~1 ≤ y_i ≤ m~,~s_i = ʼLʼ~ або ~s_i = ʼRʼ~), рядок і стовпець ~i~-го поля й тип повороту. Якщо ~s_i = «L»~, то слід повернути ліворуч. Якщо ~s_i = «R»~, то це поле повороту праворуч.

Наступний рядок містить ціле число ~q~ (~1 ≤ q ≤ 3 · 10^5~), кількість раундів.

~I~-й із наступних ~q~ рядків містить цілі числа ~a_i, b_i, c_i, d_i~(~1 ≤ a_i, c_i ≤ n~, ~1 ≤ b_i, d_i ≤ m~), стартову позицію та цільову клітину.

Формат вихідних даних

В ~i~-му з наступних ~q~ рядків вивести мінімальну кількість ходів для ~i~-го раунду гри або -1, якщо неможливо досягти мети.

Оцінювання

  • тести 1-3 - 0 балів
  • тести 4-7 - 10 балів ~k=0~
  • тести 8-21 - 15 балів ~n,m≤300,q≤10~
  • тести 22-35 - 45 балів ~n,m ≤ 300~
  • тести 36-47 - 30 балів Жодних додаткових обмежень.

Приклад вхідних даних

2 2 2
1 1 L
2 2 R
5
1 1 2 2
2 1 1 2
1 1 1 2
2 1 1 1
2 2 2 1

Приклад вихідних даних

-1
1
0
0
0

Приклад вхідних даних

3 3 4
1 1 L
1 3 L
2 1 L
3 3 L
7
1 1 3 3
3 3 2 1
3 1 2 2
2 3 1 2
2 3 3 1
1 2 3 2
3 3 2 2

Приклад вихідних даних

1
2
1
1
1
0
3

Приклад вхідних даних

4 4 8
1 1 R
1 3 L
2 2 R
2 4 L
3 1 L
3 3 L
4 2 L
4 4 L
7
1 2 1 4
2 2 3 4
4 4 3 2
4 1 4 4
4 2 3 1
1 2 2 3
2 4 2 3

Приклад вихідних даних

2
1
1
0
-1
5
0

Коментарі

Please read the guidelines before commenting.


Ще немає коментарів.