Dominative Divide

Xem dạng PDF

Gửi bài giải


Điểm: 1,00 (OI)
Giới hạn thời gian: 0.5s
Giới hạn bộ nhớ: 256M
Input: DOMI.INP
Output: DOMI.OUT

Dạng bài
Ngôn ngữ cho phép
C++, Pascal, Python

Một dãy số ~x_1, x_2, \ldots, x_m~ được gọi là dominative nếu tồn tại một giá trị ~k~ xuất hiện nhiều hơn ~\frac{m}{2}~ lần. Ví dụ:

  • Dãy ~[3, 2, 2]~ là dominative vì giá trị ~2~ xuất hiện ~2~ lần, lớn hơn ~\frac{3}{2}~.
  • Dãy ~[1, 2, 3, 2]~ không phải dominative vì không có giá trị nào xuất hiện nhiều hơn ~\frac{4}{2} = 2~.

Yêu cầu

Cho dãy ~a_1, a_2, \ldots, a_n~, bạn cần đếm số cách chia dãy này thành các đoạn con liên tiếp sao cho mỗi đoạn con đều không dominative.

Dữ liệu vào từ tệp văn bản: DOMI.INP

  • Dòng đầu tiên chứa số nguyên ~n~ (~1 \leq n \leq 2 \times 10^5~).
  • Dòng thứ hai chứa ~n~ số nguyên ~a_1, a_2, \ldots, a_n~ (~1 \leq a_i \leq 10^9~).

Kết quả ghi ra tệp văn bản: DOMI.OUT

  • In ra số cách chia thỏa mãn chia lấy dư cho ~10^9 + 7~.

Giới hạn

  • Trong tất cả các test ~n \leq 2 \times 10^5~, ~a_i \leq 10^9~.
  • ~18 \%~ số test có ~n \leq 100~.
  • ~18 \%~ số test có ~n \leq 1000~.
  • ~24 \%~ số test có ~n \leq 5000~.
  • ~15 \%~ số test có ~1 \leq a_i \leq 2~.
  • ~25 \%~ số test còn lại không có ràng buộc gì thêm.

Sample Input 1

4  
3 6 6 9  

Sample Output 1

2  

Sample Input 2

6  
1 2 1 2 1 2  

Sample Output 2

4  

Giải thích

  • Ở test ví dụ đầu tiên, có 2 cách chia là ~[3, 6, 6, 9]~ hoặc ~[3, 6], [6, 9]~