NKSEQ - Dãy số

Tags: dp, greedy

Problem

https://vn.spoj.com/problems/NKSEQ

https://oj.vnoi.info/problem/NKSEQ

Cho dãy số nguyên a1, a2, …, an (1≤ n≤ 100000), mỗi số không vượt qúa 10000. Dãy số này được viết trên một vòng tròn. Nghĩa là, khi cắt vòng tròn tại vị trí j, ta thu được:

aj, aj+1,…, an, a1, a2, …, aj–1

Vị trí j được gọi là vị trí tốt, nếu các điều kiện sau đây được thỏa mãn:

  • aj > 0
  • aj + aj+1 > 0
  • ….
  • aj + aj+1 + … + an > 0
  • aj + aj+1 + … + an + a1 > 0
  • aj + aj+1 + … + an + a1 + a2 + … + aj─2 > 0
  • aj + aj+1 + … + an + a1 + a2 + … + aj─2 + aj─1 > 0

Yêu cầu: hãy đếm số vị trí tốt.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên n.
  • Dòng thứ 2 chứa dãy số a1, a2,…,an.

Kết qủa

In ra 1 số nguyên duy nhất là số vị trí tốt.

Ví dụ

**Dữ liệu mẫu**
5
0 1 -2 10 3

**Kết qủa**
2

Tutorial


Submission

NKSEQ.cpp