SPOJ - KAGAIN

★ Link: https://codeforces.com/group/FLVn1Sc504/contest/274496/problem/M

★ Difficulty: ezpz

★ Tags: deque

★ Kiến thức: https://vnoi.info/wiki/algo/data-structures/deque-min-max.md

★ Tóm tắt:

Cho dãy số a[] với n phần tử. Ta cần tìm giá trị k = a[i] * (ri - li + 1) là lớn nhất với a[i] = min(a[li], a[li+1],.., a[ri]). Nói cách khác a[i] là phần tử nhỏ nhất trong đoạn a[li...ri].

★ Ý tưởng: sử dụng deque cơ bản.

Gọi L[i] là vị trí xa nhất về bên trái đối với phần từ a[i] thoả điều kiện a[L[i]...i-1] đều lớn hơn hoặc bằng a[i].

Gọi R[i] là vị trí xa nhất về bên phải đối với phần tử a[i] thoả điều kiện a[i+1...R[i]] đều lớn hơn hoặc bằng a[i].

Để tìm các vị trí L[i] và R[i] như trên ta sẽ dùng deque. Các bạn xem code và đọc tài liệu bên trên sẽ rõ.

★ Code: https://ideone.com/bsCxZe

Comments

Popular posts from this blog

Codeforces - 1433D - Districts Connection

Codeforces - 1462E2 - Close Tuples (hard version)

Kadane's algorithm - Finding maximum rectangular submatrix