Cải cách giáo dục

Đề bài

Mô tả

Một năm học gồm n ngày. Mỗi ngày học sinh học đúng một môn, và mỗi môn được học nhiều nhất một ngày. Có tất cả m môn học; sau buổi học môn thứ i, học sinh nhận bài tập về nhà gồm không ít hơn ai và không nhiều hơn bi bài. Ngoài ra môn thứ i còn có độ khó ci.

Nhà trường tự lập thời khoá biểu sao cho thoả mãn đồng thời các điều kiện sau:

  • Các môn trong thời khoá biểu được xếp theo thứ tự độ khó tăng ngặt.
  • Gọi xi là số bài tập được giao trong ngày thứ i. Với mọi i thoả 1<i≤n, phải có xi=xi−1+k hoặc xi=k·xi−1.
  • Tổng số bài tập của cả n ngày là lớn nhất có thể.

Hai môn khác nhau có thể có cùng độ khó, nhưng khi đó chúng không thể cùng xuất hiện trong thời khoá biểu vì độ khó phải tăng ngặt.

Hãy lập thời khoá biểu cho năm học tới, hoặc cho biết không tồn tại thời khoá biểu hợp lệ.

Dữ liệu vào

  • Dòng đầu chứa ba số nguyên n, m, k: số ngày trong năm học, số môn học và tham số k.
  • Mỗi dòng trong m dòng tiếp theo chứa ba số nguyên ai, bi, ci: hai giới hạn về số bài tập và độ khó của môn thứ i. Các môn được đánh số từ 1 đến m.

Dữ liệu ra

Nếu không tồn tại thời khoá biểu hợp lệ, in ra một dòng duy nhất chứa NO.

Ngược lại, dòng đầu in ra YES, sau đó là n dòng mô tả thời khoá biểu: dòng thứ i chứa hai số nguyên dương là chỉ số môn học trong ngày thứ i và số bài tập về nhà được giao trong ngày đó.

Nếu có nhiều thời khoá biểu cùng đạt tổng số bài tập lớn nhất, in ra một thời khoá biểu bất kỳ.

Ràng buộc

  • 1≤n≤m≤50
  • 1≤k≤100
  • 1≤ai≤bi≤1016
  • bi−ai≤100
  • 1≤ci≤100

Ví dụ

Input Output Giải thích
4 5 2
1 10 1
1 10 2
1 10 3
1 20 4
1 100 5
YES
1 8
2 10
4 20
5 40
Bốn môn được chọn có độ khó 1<2<4<5. Dãy bài tập 8,10,20,40 hợp lệ vì 10=8+2, 20=10·2, 40=20·2, và mỗi giá trị đều nằm trong khoảng của môn tương ứng. Tổng 78 là lớn nhất có thể.
3 4 3
1 3 1
2 4 4
2 3 3
2 2 2
NO Không có cách chọn 3 môn với độ khó tăng ngặt sao cho mỗi bước +3 hoặc ×3 đều rơi vào khoảng cho phép của môn kế tiếp.
3 5 2
10 20 4
1 10 1
30 40 7
20 30 5
40 50 99
YES
1 20
3 40
5 42
Độ khó 4<7<99. Bước đầu dùng phép nhân (40=20·2), bước sau dùng phép cộng (42=40+2). Tổng 102 là lớn nhất.

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