(thi thử L9 - 2) Bài tập không có thật

Xem PDF



Tác giả:
Dạng bài
Điểm: 1 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Tối hôm đi Hội An, cả đám lao vào sinh test cho đề tới 5-6h sáng. Trong lúc đó, cả đám vừa sinh test, vừa code chéo cho nhau.

Trong số đống bài tập đó, anh sẽ cho các bạn thử một bài tập không nằm trong kho đề vì anh mới bịa ra cách đây vài tiếng như sau:


Cho dãy \(A\)\(n\) số \(A_1, A_2, \dots, A_n\). Xét các đoạn độ dài \(k\).

\(q\) câu hỏi, mỗi câu hỏi gồm một số \(X\) \((1 \le X \le 10^{18})\) và có dạng:

Tìm đoạn \((l, r)\) thỏa mãn \(1 \le l \le r \le n\)\(r-l+1=k\), sao cho tổng \(A_l + A_{l+1} + A_{l+2} + \dots + A_r \le X\), và tổng này là lớn nhất.

Nếu không có đoạn nào thỏa mãn, đáp án sẽ là \(l=r=0\). Nếu có nhiều hơn một đoạn thỏa mãn, ta chọn đoạn có vị trí \(l\) nhỏ nhất

Hãy trả lời \(q\) câu hỏi đó

Input (unreal.inp)

  • Dòng đầu tiên chứa hai số \(n, k\)
  • Dòng thứ hai chứa \(n\) số \(A_1, A_2, \dots, A_n\).
  • Dòng thứ ba chứa một số duy nhất \(q\)
  • Dòng cuối cùng chứa \(q\) số, số thứ \(i\) cho biết số \(X\) của truy vấn thứ \(i\)

Output (unreal.out)

In ra \(q\) dòng, dòng thứ \(i\) gồm lần lượt hai số \(l_i, r_i\) cho biết đoạn đáp án của truy vấn \(i\) nằm từ vị trí \(l_i\) tới \(r_i\).

Subtask

  • Subtask 1 (30%): \(n, k \le 10^3; q = 1\)
  • Subtask 2 (20%): \(n, k \le 10^3; q = 10^5\)
  • Subtask 3 (30%): \(n, k \le 10^5; q = 1\)
  • Subtask 4 (20%): \(n, k \le 10^5; q = 10^5\)

Sample

Test 1

Input
5 3
2 1 3 1 2
3
4
5
6
Output
0 0
2 4
1 3
Note

Ở truy vấn 1, \(X = 4\). Không có đoạn nào thỏa mãn tổng bằng \(4\).

Ở truy vấn 2, \(X = 5\). Có đúng một đoạn \((l, r) = (2, 4)\)\(A_2 + A_3 + A_4 = 1+3+1 = 5\).

Ở truy vấn 3, \(X = 6\). Có hai đoạn thỏa mãn tổng bằng 6: \((l=1,r=3)\)\((l=3, r=5)\). Ta chọn đoạn \((1, 3)\)\(l\) của đoạn này nhỏ hơn.


Bình luận

Không có bình luận nào.