trang chủ / bài tập / eatchoco

Thanh sô-cô-la

Đề bài

Mô tả

Một thanh sô-cô-la được biểu diễn bằng bảng n×n ô. Các cột đánh số từ 1 đến n từ trái sang phải, các hàng đánh số từ 1 đến n từ trên xuống dưới. Ô ở cột x, hàng y được ký hiệu là (x,y).

Đường chéo phụ là đường chéo đi từ góc dưới bên trái tới góc trên bên phải, tức là tập các ô (x,y) với x+y=n+1.

Đầu tiên, toàn bộ các ô nằm phía dưới đường chéo phụ (các ô có x+y>n+1) đã bị ăn hết. Phần còn lại là một tam giác gồm các ô có x+yn+1.

Sau đó, có q thao tác được thực hiện lần lượt. Mỗi thao tác chọn một ô (x,y) nằm trên đường chéo phụ và một hướng:

  • Hướng U (lên trên): đi từ ô (x,y) theo chiều giảm dần của hàng.
  • Hướng L (sang trái): đi từ ô (x,y) theo chiều giảm dần của cột.

Bắt đầu từ chính ô (x,y), ta ăn từng ô một theo hướng đã chọn, và dừng lại ngay khi gặp một ô đã bị ăn trước đó hoặc khi đi ra ngoài thanh sô-cô-la. Lưu ý rằng nếu bản thân ô (x,y) đã bị ăn từ trước thì thao tác đó không ăn được ô nào.

Với mỗi thao tác, hãy cho biết số ô bị ăn trong thao tác đó.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nq: kích thước thanh sô-cô-la và số thao tác.
  • q dòng tiếp theo, dòng thứ i chứa hai số nguyên xi, yi và một ký tự là U hoặc L, mô tả thao tác thứ i.

Dữ liệu ra

In ra q dòng, dòng thứ i là số ô bị ăn trong thao tác thứ i.

Ràng buộc

  • 1n109
  • 1q2·105
  • 1xi,yinxi+yi=n+1

Ví dụ

Input Output Giải thích
6 5
3 4 U
6 1 L
2 5 L
1 6 U
4 3 U
4
3
2
1
2
Thao tác 1 ăn cả cột 3 từ hàng 4 lên hàng 1, được 4 ô. Thao tác 2 đi từ (6,1) sang trái, ăn các ô (6,1),(5,1),(4,1) rồi dừng vì (3,1) đã bị ăn ở thao tác 1. Thao tác 5 đi từ (4,3) lên trên, ăn (4,3)(4,2) rồi dừng vì (4,1) đã bị ăn ở thao tác 2.
10 6
2 9 U
10 1 U
1 10 U
8 3 L
10 1 L
6 5 U
9
1
10
6
0
2
Thao tác 4 đi từ (8,3) sang trái tới (3,3) rồi dừng vì (2,3) đã bị ăn ở thao tác 1, được 6 ô. Ở thao tác 5, ô xuất phát (10,1) đã bị ăn ở thao tác 2 nên không ăn thêm ô nào, kết quả là 0.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0