Theo như topic hehe

Cách làm của mình như sau:

Với mỗi dãy kết thúc tại j, tìm i nhỏ nhất thỏa mãn yêu cầu rồi cập nhật kết quả.

Đặt s[i] = a[1]+a[2]+...+a[n], s[0]=0

\(\Rightarrow a[i]+a[i+1]+...+a[j] = s[j]-s[i-1]\)

Như vậy với mỗi j bài toán trở thành tìm i nhỏ nhất thỏa mãn:

    \(\begin{cases}s[j]-s[i] \geq p\\i_{min}< j\end{cases} \Leftrightarrow \begin{cases}s[i] \leq s[j]-p\\i_{min}<j\end{cases} \Leftrightarrow \begin{cases}min(s[0],s[1],...,s[i]) \leq s[j]-p\\i_{min}<j\end{cases}\)

Đến đây bạn có thể áp dụng kĩ thuật chặt nhị phân để đạt đpt O(NlogN) hoặc sử dụng kĩ thuật tinh tế hơn để được đpt O(N)