Búp bê lồng nhau

Đề bài

Mô tả

n con búp bê gỗ lồng nhau (matryoshka). Con búp bê thứ i có thể tích ngoài là outi và bên trong rỗng một khoảng thể tích ini (luôn có outi>ini).

Búp bê i có thể được lồng vào bên trong búp bê j nếu outiinj. Một tập búp bê được gọi là lồng nhau nếu ta có thể sắp xếp chúng thành một dãy sao cho con thứ nhất lồng vào con thứ hai, con thứ hai lồng vào con thứ ba, và cứ thế tiếp tục.

Với một tập lồng nhau gồm các búp bê i1,i2,,ik (theo thứ tự từ trong ra ngoài), khoảng trống thừa của cấu trúc là tổng thể tích rỗng còn lại:

ini1+(ini2outi1)+(ini3outi2)++(inikoutik1).

Một tập lồng nhau được gọi là đủ lớn nếu không thể thêm bất kỳ búp bê nào khác trong dãy vào tập đó mà vẫn giữ được tính lồng nhau.

Bạn cần chọn một tập con lồng nhau đủ lớn sao cho khoảng trống thừa của nó là nhỏ nhất trong số tất cả các tập đủ lớn. Hãy đếm xem có bao nhiêu tập con đủ lớn khác nhau đạt được khoảng trống thừa nhỏ nhất này.

Hai tập con được coi là khác nhau nếu tồn tại ít nhất một chỉ số i mà búp bê thứ i thuộc tập này nhưng không thuộc tập kia.

Vì kết quả có thể rất lớn, hãy in ra phần dư khi chia cho 109+7.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên n là số lượng búp bê.
  • n dòng tiếp theo, dòng thứ i chứa hai số nguyên outiini là thể tích ngoài và thể tích rỗng bên trong của búp bê thứ i.

Dữ liệu ra

  • In ra một số nguyên duy nhất là số tập con đủ lớn có khoảng trống thừa nhỏ nhất, lấy phần dư khi chia cho 109+7.

Ràng buộc

  • 1n2·105
  • 1ini<outi109

Ví dụ

Input Output Giải thích
7
4 1
4 2
4 2
2 1
5 4
6 4
3 2
6 Có 6 tập đủ lớn đạt khoảng trống thừa nhỏ nhất (bằng 1): {1,5}, {1,6}, {2,4,5}, {2,4,6}, {3,4,5}, {3,4,6}. Chẳng hạn {6,7} không đủ lớn vì có thể thêm búp bê 4; còn {4,6,7} có khoảng trống thừa bằng 2.
1
1000000000 999999999
1 Chỉ có một búp bê, tập {1} là tập đủ lớn duy nhất.
4
3 2
10 2
4 3
5 4
2 Có hai tập đủ lớn cùng đạt khoảng trống thừa nhỏ 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.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