Chia mảng

Đề bài

Mô tả

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

Ta muốn cắt mảng thành hai phần liên tiếp không rỗng: một tiền tố và một hậu tố, sao cho tổng các phần tử của hai phần bằng nhau. Điều này không phải lúc nào cũng làm được ngay, nên trước khi cắt ta được phép di chuyển đúng một phần tử: xoá một phần tử khỏi vị trí hiện tại của nó rồi chèn lại vào một vị trí tuỳ ý trong mảng. Chèn lại vào đúng vị trí cũ cũng được tính là một lần di chuyển, nên thực chất ta luôn có quyền giữ nguyên mảng.

Hãy xác định xem sau khi chọn phần tử cần di chuyển và vị trí chèn mới của nó, có thể cắt mảng như trên hay không.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n là số phần tử của mảng.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an.

Dữ liệu ra

In ra YES nếu có thể cắt mảng theo yêu cầu, ngược lại in ra NO.

Ràng buộc

  • 1n105
  • 1ai109

Ví dụ

Input Output Giải thích
3
1 3 2
YES Chuyển phần tử thứ hai (giá trị 3) xuống cuối mảng, được [1,2,3]. Cắt sau vị trí thứ hai: 1+2=3.
5
1 2 3 4 5
NO Tổng bằng 15 là số lẻ nên hai phần không thể có tổng bằng nhau.
5
2 2 3 4 5
YES Chuyển phần tử thứ tư (giá trị 4) sang trái một vị trí, được [2,2,4,3,5]. Cắt sau vị trí thứ ba: 2+2+4=3+5=8.
5
10 10 40 10 10
YES Chuyển phần tử 40 lên đầu mảng, được [40,10,10,10,10]. Cắt sau vị trí đầu tiên: 40=10+10+10+10.

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