CSES - Distinct Values Splits | Chia mảng theo giá trị phân biệt

Xem PDF



Tác giả:
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: 1600 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Bạn được cho một mảng gồm \(n\) số nguyên. Nhiệm vụ của bạn là đếm số cách chia mảng thành các đoạn liên tiếp sao cho mọi đoạn đều chỉ gồm các giá trị phân biệt.

Input

Dòng đầu tiên chứa một số nguyên \(n\): kích thước của mảng.

Dòng tiếp theo chứa \(n\) số nguyên \(x_1, x_2,\dots, x_n\): các phần tử của mảng.

Output

In ra một số nguyên: đáp án của bài toán lấy modulo \(10^9 + 7\).

Constraints

  • \(1 \le n \le 2 \cdot 10^5\)

  • \(1 \le x_i \le 10^9\)

Example

Test 1

Input
4
1 2 1 3
Output
6

Explanation

Có sáu cách chia hợp lệ:

  • \([1], [2], [1], [3]\)

  • \([1], [2], [1, 3]\)

  • \([1], [2, 1], [3]\)

  • \([1], [2, 1, 3]\)

  • \([1, 2], [1], [3]\)

  • \([1, 2], [1, 3]\)

Bình luận

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

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