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

Những Ngọn Núi

Đề bài

Mô tả

N ngọn núi đặt cách đều nhau trên một đường thẳng. Ngọn núi thứ i có đỉnh tại điểm (i,hi).

Hai ngọn núi ij (i<j) nhìn thấy nhau nếu không có ngọn núi k nào với i<k<j mà đỉnh của nó nằm hoàn toàn phía trên đoạn thẳng nối đỉnh núi i với đỉnh núi j. Một đỉnh nằm đúng trên đoạn thẳng đó thì không che khuất tầm nhìn.

Q lần cập nhật, mỗi lần tăng độ cao của một ngọn núi. Sau mỗi lần cập nhật, hãy đếm số cặp ngọn núi nhìn thấy nhau.

Dữ liệu vào

  • Dòng 1: số nguyên N.
  • Dòng 2: N số nguyên h1,h2,,hN.
  • Dòng 3: số nguyên Q.
  • Q dòng tiếp theo: mỗi dòng chứa hai số nguyên xy, nghĩa là tăng hx thêm y. Các cập nhật được áp dụng lần lượt và có hiệu lực với những cập nhật sau đó.

Dữ liệu ra

In Q dòng, dòng thứ t là số cặp ngọn núi nhìn thấy nhau sau lần cập nhật thứ t.

Ràng buộc

  • 1N2000
  • 0hi109
  • 1Q2000
  • 1xN, 1y109

Ví dụ

Input Output Giải thích
5
2 4 3 1 5
3
4 3
1 3
3 2
7
10
7
Ban đầu có 6 cặp nhìn thấy nhau: (1,2),(2,3),(3,4),(4,5),(2,5),(3,5). Sau cập nhật 1 (h=[2,4,3,4,5]) có thêm cặp (1,5) nên được 7 cặp. Sau cập nhật 2 (h=[5,4,3,4,5]) núi 1 cao lên và nhìn thấy mọi núi khác, tổng cộng 10 cặp. Sau cập nhật 3 (h=[5,4,5,4,5]) núi 3 che khuất các cặp đi qua nó, chỉ còn 7 cặp.
3
1 1 1
2
2 1
2 1
2
2
Ban đầu ba đỉnh thẳng hàng nên cả 3 cặp đều nhìn thấy nhau. Sau cập nhật 1 (h=[1,2,1]) đỉnh 2 nhô lên trên đoạn nối đỉnh 1 và đỉnh 3, phá vỡ cặp (1,3), còn 2 cặp. Cập nhật 2 (h=[1,3,1]) không làm thay đổi gì thêm.

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.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0