1155 - Độ đẹp của dãy

Với giới hạn n \leq 1000, ta hoàn toàn có thể giải bằng thuật toán O(n^2) sau:

Duyệt qua tất cả các vị trí i từ 2 đến n - 1. Với mỗi i, ta tạo một dãy b giống với dãy a, thử xóa phần tử thứ i khỏi dãy b, tính độ đẹp của dãy b và cập nhật đáp án.

Ta nhận xét rằng, khi xóa phần tử thứ i khỏi dãy a thì độ đẹp của dãy a sẽ là giá trị lớn nhất giữa độ đẹp của dãy a ban đầu và a[i+1] - a[i-1]. Do đó, gọi S là giá trị a[i+1] - a[i-1] lớn nhất với mọi 1 < i < n. Đáp án cần tìm sẽ là giá trị lớn hơn giữa S và độ đẹp dãy a ban đầu. Mà giá trị S luôn lớn hơn độ đẹp ban đầu của dãy a nên đáp án cần tìm là S.

Độ phức tạp: O(n)