Phép trừ cực đại

Đề bài

Mô tả

Cho mảng a gồm n số nguyên dương.

Bạn có thể thực hiện thao tác sau bao nhiêu lần tùy ý: chọn một số nguyên 1kn và làm một trong hai việc:

  • Giảm đi 1k phần tử đầu tiên của mảng.
  • Giảm đi 1k phần tử cuối cùng của mảng.

Ví dụ với n=5a=[3,2,2,1,4]:

  • Giảm hai phần tử đầu: a=[2,1,2,1,4].
  • Giảm ba phần tử cuối: a=[3,2,1,0,3].
  • Giảm cả năm phần tử: a=[2,1,1,0,3].

Hãy xác định liệu có thể biến tất cả phần tử của a thành 0 hay không.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t — số bộ test.
  • Mỗi bộ test gồm hai dòng:
    • Dòng đầu chứa số nguyên n — kích thước mảng.
    • Dòng sau chứa n số nguyên a1,a2,,an.

Dữ liệu ra

Với mỗi bộ test, in ra trên một dòng:

  • YES nếu có thể biến tất cả phần tử thành 0.
  • NO nếu không thể.

(Chữ hoa hay chữ thường đều được chấp nhận.)

Ràng buộc

  • 1t30000
  • 1n30000
  • 1ai106
  • Tổng n trên tất cả bộ test không vượt quá 30000.

Ví dụ

Input Output Giải thích
4
3
1 2 1
5
11 7 9 6 8
5
1 3 1 3 1
4
5 2 1 10
YES
YES
NO
YES
Bộ test thứ ba không thể về 0: phần tử thứ hai lớn hơn cả hai phần tử kề nó, nên không có cách nào "đi xuống" đối xứng từ hai phía.
4
3
2 4 1
5
3 14 7 6 8
5
0 3 1 4 1
4
5 2 1 12
NO
NO
NO
YES
Ba bộ test đầu đều có "đỉnh" mà phía bên không đủ giá trị tích lũy để giảm xuống 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.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