Cắt bánh

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1200 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Sau khi Hùng đã làm xong cho bản thân một chiếc bánh dâu tây siêu ngon, anh ấy quyết định cắt chiếc bánh ra làm nhiều phần. Với mỗi lần cắt bánh Hùng sẽ chọn ra \(1\) miếng bánh (ban đầu cả chiếc bánh là \(1\) miếng) có trọng lượng \(w > 2\) và cắt nó ra thành 2 phần bánh nhỏ hơn có trọng số lần lượt là \(\lfloor\frac{w}{2}\rfloor\)\(\lceil\frac{w}{2}\rceil\) (\(\lfloor a \rfloor\)\(\lceil a \rceil\) lần lượt là làm tròn xuống và làm tròn lên).

Sau khi cắt được chiếc bánh ra thành \(n\) miếng bánh Hùng có được trọng lượng của từng miếng bánh nhưng lại quên mất trọng lượng ban đầu của chiếc bánh (vì làm tròn) nên Hùng không biết mình có làm tròn đúng hay không vậy. Hãy giúp Hùng kiểm tra xem có tồn tại chiếc bánh nào có trọng lượng \(x\) mà sau khi cắt thành \(n\) miếng bánh thì trọng lượng của chúng đúng bằng trọng lượng của những miếng bánh mà Hùng đã tính. Nếu có thì in ra YES ngược lại in ra NO.

Input

  • Dòng đầu tiên chứa \(1\) số nguyên dương \(n\) (\(1 \leq n \leq 2\cdot 10^5\)).
  • Dòng thứ hai gồm \(n\) số nguyên dương \(a_i\) (\(1 \leq a_i \leq 10^6\)) là trọng lượng của các miếng bánh sau khi được cắt ra.

Dữ liệu đầu vào đảm bảo \(a_1 + a_2 + \dots + a_n \leq 10^6\).

Output

  • \(1\) dòng duy nhất là kết quả của bài toán.

Example

Test 1

Input
3
2 3 1
Output
YES
Note
  • Tồn tại chiếc bánh có trọng lượng ban đầu là \(6\). Lần lượt thực hiện các thao tác cắt chiếc bánh ra thành \((3, 3)\) tiếp theo cắt thành \((1, 2, 3)\).

Test 2

Input
2
869 541
Output
NO

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: