Задача №1847. Питон
Как и большинство пятиклассников, Петя очень любит компьютерные игры, больше всего ему нравится игра “Питон”. Суть этой игры состоит в следующем. На клетчатом поле размером \(N \times N\), находятся \(M\) кроликов. Каждый кролик имеет свою калорийность. Играющий управляет питоном, который изначально имеет длину \(2\). Каждую секунду голова питона перемещается на одну позицию вверх, влево, вправо или вниз, в соответствии с клавишей, которую в данный момент нажимает играющий, а хвост питона перемещается на клетку, где находилась часть питона, предшествующая хвосту. Когда питон съедает кролика с калорийностью \(K\), голова у него продолжает двигаться, а хвост в течении \(K\) секунд остается на месте. При этом происходит увеличение длины питона на \(K\). Как только питон пересекает сам себя, игра заканчивается. Если питон съедает кролика, когда процесс переваривания предыдущего кролика еще не закончен, то очередной кролик остается в пищеводе и ждет своей очереди на переваривание. Длина питона, в конечном итоге, должна увеличится на величину равную сумме калорийностей всех съеденных кроликов (если, разумеется, до этого игра не завершится).
После некоторой практики Петя решил, что его техника игры совершенна, и что надо оставить записи потомкам о своих играх. Для этого он записывал, на какие клавиши он нажимал и сколько времени (в секундах) он держал клавишу нажатой (а Петя, как истинный игроман, каждую секунду держал нажатой какую-либо клавишу). К сожалению, в той версии “Питона”, в которую играл Петя, содержалась ошибка, а именно в некоторых случаях питон мог пересекать сам себя без всяких последствий. Ваша задача состоит в том, чтобы написать программу, которая по известному начальному положению питона, расположению кроликов на площадке и последовательности нажатий на клавиши определит первый момент времени, когда питон пересечет сам себя. Известно, что других ошибок “Питон” не содержит. В частности, питон не может последовательно двигаться в противоположных направлениях.
На первой строке входного файла находятся числа \(N\) и \(M\) (\(2 \leq N \leq 50\), \(0 \leq M \leq 50\)) На следующей строке находятся координаты головы и хвоста питона \(X_1\),\(Y_1\) ,\(X_2\), \(Y_2\) (\(|X_1 - X_2| + |Y_1 - Y_2| = 1\)). На следующих \(M\) строках следуют величины \(A_i\), \(B_i\), \(C_i\) (\(1 \leq i \leq M\)), разделенные пробелами – координаты и калорийность \(i\)-го кролика (\(1 \leq A_i, B_i \leq N\), \(0 \leq C_i \leq 10\)). Начиная со следующей строки, будет находиться последовательность Петиных нажатий на клавиши, в следующем виде <Название клавиши> <время нажатия>. Название клавиши может быть одним из четырех UP, DOWN, LEFT и RIGHT (Петя нажимал только на клавиши стрелок), а время нажатия – натуральное число. Гарантируется, что каждая строка будет содержать информацию ровно об одном нажатии.
Ваша программа должна вывести в выходной файл – одно число, секунду, на которой закончится игра (то есть когда питон пересечет сам себя, или к моменту окончания записей).
5 3 4 4 4 5 1 1 0 3 3 2 5 5 1 UP 1 LEFT 1 UP 2 LEFT 2 DOWN 4 RIGHT 4 UP 1 LEFT 1 DOWN 1 LEFT 3
17