trang chủ / đề bài / runfield

Chạy qua sân

Đề bài

Mô tả

Một vận động viên chạy qua một sân hình chữ nhật gồm 3 hàng và m cột. Ô (i,j) là ô nằm ở hàng i, cột j.

Vận động viên xuất phát tại ô (2,1) và phải kết thúc tại ô (2,m). Từ ô (i,j), anh ta có thể di chuyển tới:

  • (i−1,j+1) — chỉ khi i>1,
  • (i,j+1),
  • (i+1,j+1) — chỉ khi i<3.

Trên sân có n chướng ngại vật. Chướng ngại vật thứ k được mô tả bởi ba số nguyên ak, lk, rk: cấm đi vào mọi ô (ak,j) với lk≤j≤rk. Một ô có thể bị chặn bởi nhiều chướng ngại vật.

Hãy đếm số đường đi khác nhau từ (2,1) đến (2,m), lấy dư theo 109+7. Nếu không tồn tại đường đi nào, đáp án là 0.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n và m — số chướng ngại vật và số cột của sân.
  • n dòng tiếp theo, mỗi dòng chứa ba số nguyên ak, lk, rk mô tả một chướng ngại vật.

Dữ liệu ra

In ra một số nguyên duy nhất — số đường đi từ (2,1) đến (2,m), lấy dư theo 109+7.

Ràng buộc

  • 1≤n≤104
  • 3≤m≤1018
  • 1≤ak≤3
  • 2≤lk≤rk≤m−1

Ví dụ

Input Output Giải thích
2 5
1 3 4
2 2 3
2 Hàng 1 bị chặn ở cột 3, 4; hàng 2 bị chặn ở cột 2, 3. Hai đường đi hợp lệ là (2,1)→(3,2)→(3,3)→(2,4)→(2,5) và (2,1)→(3,2)→(3,3)→(3,4)→(2,5).
1 3
2 2 2
2 Ô (2,2) bị chặn nên phải đi vòng qua hàng 1 hoặc hàng 3: (2,1)→(1,2)→(2,3) hoặc (2,1)→(3,2)→(2,3).

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0