trang chủ / đề bài / thhv23_proline

Hàng cây

Đề bài

Mô tả

Trên một tuyến đường có n cây cổ thụ thuộc một trong n loại khác nhau. Từ đầu đến cuối đoạn đường, cây thứ i có chiều cao là hi. Chính quyền thành phố muốn loại bỏ một số cây để những cây còn lại có chiều cao tăng dần từ đầu đến cuối đoạn đường. Đồng thời, để tăng tính thẩm mỹ, lãnh đạo cũng muốn số cây còn lại không nhỏ hơn 3 và chiều cao của các cây giữ lại nhìn từ đầu tới cuối tạo thành một cấp số cộng. Nói cách khác, giả sử giữ lại k cây, và các cây được giữ lại có chỉ số p1,p2,…,pk (1≤p1<p2<⋯<pk≤n; k≥3) thì:

hp2−hp1=hp3−hp2=⋯=hpk−hpk−1>0.

An đang thắc mắc liệu có bao nhiêu cách chọn cây thỏa mãn yêu cầu của lãnh đạo chính quyền thành phố đưa ra. Hai cách chọn được gọi là khác nhau nếu tồn tại một cây được chọn ở cách này nhưng không xuất hiện ở cách chọn còn lại (các cây khác vị trí là khác nhau, kể cả khi có cùng chiều cao).

Dữ liệu vào

  • Dòng đầu chứa số nguyên dương n (n≤104).
  • Dòng thứ hai chứa n số nguyên dương h1,h2,…,hn (hi≤106, ∀i=1,2,…,n).

Dữ liệu ra

In ra một số nguyên là số cách tìm được lấy theo modulo 109+7.

Ràng buộc

  • 1≤n≤104.
  • 1≤hi≤106 với mọi i=1,2,…,n.

Subtasks

Điểm được tính theo từng test.

  • Subtask 1 (15% số test): n≤20; hi=i, ∀i=1,2,…,n.
  • Subtask 2 (15% số test): n≤20.
  • Subtask 3 (20% số test): 20<n≤500.
  • Subtask 4 (20% số test): 500<n≤2000.
  • Subtask 5 (30% số test): 2000<n≤104.

Ví dụ

Input Output Giải thích
6
3 1 3 5 9 7
5 Có 5 cách lựa chọn giữ lại các cây với thứ tự: {1,4,6}; {2,3,4}; {2,3,4,6}; {2,4,5}; {3,4,6}.
6
1 2 2 2 3 3
6 Ví dụ bổ sung (không có trong đề gốc). Chọn cây 1, một trong ba cây cao 2 và một trong hai cây cao 3: 1·3·2=6 cách. Bộ ba cây cao 2,2,2 không được tính vì công sai phải lớn hơn 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.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