Chia đôi đoạn con


Submit solution

Points: 3 (partial)
Time limit: 1.0s
Memory limit: 67M

Author:
Problem types
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG

Cho dãy số gồm \(n\) số nguyên không âm \(a_1, a_2 ,..., a_n\). Với mỗi truy vấn dạng \(l\:r\) bạn hãy tìm chỉ số \(i\:(l \le i \le r - 1)\) nhỏ nhất sao cho \(|(a_l + ... + a_i) - (a_{i + 1} + .. + a_r)|\) đạt giá trị nhỏ nhất.

Đầu vào

Dòng đầu chứa số nguyên dương \(n\) và \(q\) \((2 \leq n, q \leq 10^5)\) là số phần tử của dãy và số lần truy vấn.

Dòng tiếp theo gồm \(n\) số nguyên không âm là các phần tử của dãy có giá trị không vượt quá \(10^9\).

\(q\) dòng tiếp theo, mỗi dòng gồm chứa hai số nguyên dương \(l, r\) \((1 \le l < r \le n)\).

Đầu ra

Một dòng duy nhất chứa \(n - 1\) số tự nhiên.

Subtask

\(30\%\) số test có \(n*q \le 10^6\).

Ví dụ

Đầu vào:

6 3
1 2 3 4 5 6
1 6
2 5
3 4

Đầu ra:

4
3
3

Giải thích: Truy vấn đầu tiên ta chia thành hai đoạn \(a_1, a_2, a_3, a_4\) và \(a_5, a_6\), khác biệt nhỏ nhất là \(1\); truy vấn thứ hai chia thành hai đoạn \(a_2, a_3\) và \(a_4, a_5\), khác biệt nhỏ nhất là \(4\); truy vấn cuối cùng đoạn được chia thành \(a_3\) và \(a_4\) có khác biệt là \(1\).

QDUY

Comments

There are no comments at the moment.