trang chủ / đề bài / nolocmax

Dãy không có cực đại địa phương

Đề bài

Mô tả

Cho một dãy a1,a2,…,an gồm các số nguyên trong đoạn [1,200]. Dãy này có tính chất: mỗi phần tử đều có ít nhất một phần tử kề không nhỏ hơn nó. Nói chính xác:

  • a1≤a2,
  • an≤an−1,
  • ai≤max(ai−1,ai+1) với mọi i từ 2 đến n−1.

Theo thời gian, một số phần tử của dãy đã bị mờ và không còn đọc được. Hãy đếm số cách khôi phục các phần tử bị mờ sao cho dãy thu được vẫn giữ tính chất trên. Giá trị được điền vào cũng phải là số nguyên thuộc đoạn [1,200].

Vì kết quả có thể rất lớn, hãy in ra phần dư của nó khi chia cho 998244353.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên n: độ dài của dãy.
  • Dòng thứ hai chứa n số nguyên a1,a2,…,an. Nếu ai=−1 thì phần tử thứ i đã bị mờ, ngược lại ai là giá trị đã biết của phần tử đó.

Dữ liệu ra

Một số nguyên duy nhất: số cách khôi phục dãy, lấy phần dư khi chia cho 998244353.

Ràng buộc

  • 2≤n≤105
  • ai=−1 hoặc 1≤ai≤200

Ví dụ

Input Output Giải thích
3
1 -1 2
1 Từ a1≤a2 và a3≤a2 suy ra a2≥2, còn a2≤max(a1,a3)=2. Vậy chỉ có a2=2.
2
-1 -1
200 Hai điều kiện a1≤a2 và a2≤a1 buộc a1=a2, nên có đúng 200 dãy.
3
-1 200 -1
399 Điều kiện a2≤max(a1,a3) buộc a1=200 hoặc a3=200; hai phần tử còn lại tự do. Số cách là 200+200−1=399.

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0