trang chủ / đề bài / almostcon

Đoạn gần như hằng số

Đề bài

Mô tả

Cho dãy n số nguyên a1,a2,…,an ghi lại kết quả đo của một đại lượng đang dần tiến tới trạng thái cân bằng. Do phép đo diễn ra liên tục nên giữa hai kết quả liền nhau không có bước nhảy lớn: với mọi 1≤i<n ta luôn có |ai+1−ai|≤1.

Một đoạn liên tiếp [l,r] (với 1≤l≤r≤n) được gọi là gần như hằng số nếu hiệu giữa giá trị lớn nhất và giá trị nhỏ nhất trong đoạn đó không vượt quá 1. Nói cách khác, nếu M=maxl≤i≤rai và m=minl≤i≤rai thì đoạn [l,r] gần như hằng số khi M−m≤1.

Hãy tìm độ dài lớn nhất của một đoạn gần như hằng số, trong đó độ dài của đoạn [l,r] là số phần tử r−l+1.

Dữ liệu vào

  • Dòng đầu chứa một số nguyên n là số lượng kết quả đo.
  • Dòng thứ hai chứa n số nguyên a1,a2,…,an.

Dữ liệu ra

Một số nguyên duy nhất là độ dài lớn nhất của một đoạn gần như hằng số.

Ràng buộc

  • 2≤n≤100000
  • 1≤ai≤100000
  • |ai+1−ai|≤1 với mọi 1≤i<n

Ví dụ

Input Output Giải thích
5
1 2 3 3 2
4 Đoạn dài nhất là [2,5] gồm các giá trị 2 3 3 2, có M=3, m=2 nên M−m=1. Độ dài là 4. Đoạn [1,5] không hợp lệ vì M−m=3−1=2.
11
5 4 5 5 6 7 8 8 8 7 6
5 Có ba đoạn gần như hằng số độ dài 4 là [1,4], [6,9] và [7,10], nhưng đoạn [6,10] gồm 7 8 8 8 7 có độ dài 5 là dài nhất.

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