Đây là sự tiếp nối lỏng lẻo của thử thách trước đây của tôi về việc xây dựng đồ thị .
Lý lịch
Một nghệ sĩ lập dị đã thuê bạn để ước tính tính toàn vẹn cấu trúc của tác phẩm điêu khắc của anh ta. Ông tạo ra các tác phẩm nghệ thuật của mình bằng cách lấy một loạt nam châm hình khối, và thả từng viên một vào một đống lớn. Để phân tích tốt hơn phương pháp của mình, chúng tôi sử dụng mô hình hai chiều sau. Chúng tôi bắt đầu với một sàn trống và thả một nam châm #
ở bất kỳ tọa độ nguyên nào, nói 0
:
|
v
#
===============
0
Nếu một nam châm khác bị rơi tại 0
, nó sẽ nằm trên đỉnh của cái trước đó:
|
v
#
#
===============
0
Bây giờ, chúng ta hãy thả thêm một nam châm tại 0
, và sau đó một 1
:
|
#v
##
#
===============
0
Như đã thấy ở trên, một nam châm rơi xuống dính vào nam châm thứ hai mà nó đi qua (cái thứ nhất chỉ làm nó chậm lại). Nam châm thứ hai không cần trực tiếp bên dưới nam châm thứ nhất và nam châm ở cả hai bên vẫn được tính là một nam châm:
# #
##|##
# v #
### #
# #
===============
0
Các nghệ sĩ muốn bạn tính toán khoảng cách dọc tối đa trong tác phẩm điêu khắc cuối cùng, nghĩa là, số lượng khoảng trống tối đa giữa hai nam châm trên cùng một cột hoặc nam châm và mặt đất bên dưới nó. Trong hình trên, con số này sẽ là 3 (trên cột 2
).
Đầu vào
Một danh sách các số nguyên, đại diện cho tọa độ nơi nghệ sĩ thả nam châm, đọc từ trái sang phải. Bạn có thể giả định rằng các tọa độ thỏa mãn -1024 <= i < 1024
và độ dài của danh sách là nhiều nhất 1024
, nếu điều đó có ích.
Đầu ra
Khoảng cách dọc tối đa trong tác phẩm điêu khắc cuối cùng. Các tác phẩm điêu khắc trống có khoảng cách -1
, và trường hợp này phải được bao gồm, vì nhà điêu khắc của chúng tôi là một nghệ sĩ múa.
Quy tắc bổ sung
Bạn có thể cung cấp một chức năng hoặc một chương trình đầy đủ. Số byte ngắn nhất sẽ thắng và các sơ hở tiêu chuẩn không được phép. Mã với giải thích được ưa thích.
Các trường hợp thử nghiệm
[] -> -1
[0,2,1] -> 0
[0,0,0,0,0,1,-1] -> 3
[0,0,0,0,0,1,1,1,2] -> 4
[1,1,2,2,2,2,2,2,1] -> 2
[1,1,2,2,2,2,2,2,1,0,1,0] -> 2
[1,2,1,2,1,2,1,2,2,2,2,1,0] -> 3
[-1,-1,-1,1,1,1,0] -> 1
[-1,-1,-1,-1,2,2,1,1,2,2,2,1,0] -> 2
[-2,-2,-2,-1,-1,-1,0,0,0,1,1,1,2,2,2,3,3,4,4,5,5,5,6] -> 6