Đánh số đơn điệu

Đề bài

Mô tả

Cho một mảng a gồm n số nguyên. Ta gọi một cách đánh số đơn điệu của mảng a là một mảng b gồm n số nguyên thỏa mãn đồng thời các điều kiện sau:

  • b1=0;
  • với mọi cặp chỉ số i,j (1i,jn), nếu ai=aj thì bi=bj (lưu ý: nếu aiaj thì vẫn có thể bi=bj);
  • với mọi chỉ số i[1,n1], hoặc bi=bi+1, hoặc bi+1=bi+1.

Ví dụ, nếu a=[1,2,1,2,3] thì hai cách đánh số đơn điệu khả dĩ của ab=[0,0,0,0,0]b=[0,0,0,0,1].

Nhiệm vụ của bạn là đếm số cách đánh số đơn điệu khác nhau của mảng a. Kết quả có thể rất lớn, hãy in ra phần dư khi chia cho 998244353.

Dữ liệu vào

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

Dữ liệu ra

  • In ra một số nguyên là số cách đánh số đơn điệu khác nhau của a, lấy phần dư khi chia cho 998244353.

Ràng buộc

  • 2n2·105
  • 1ai109

Ví dụ

Input Output Giải thích
5
1 2 1 2 3
2 a1=a3a2=a4 nên b1=b2=b3=b4. Do đó chỉ có ranh giới giữa vị trí 45 là tự do: b5 bằng b4 hoặc b4+1, cho 2 cách.
2
100 1
2 Hai giá trị khác nhau, ranh giới duy nhất giữa vị trí 12 là tự do, cho 2 cách: b=[0,0] hoặc b=[0,1].
4
1 3 3 7
4 Các giá trị 1,{3,3},7 tạo thành 3 nhóm; có 2 ranh giới tự do nên đáp án là 22=4.

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