JOI 2024 - Fish 3

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2500 (p) Thời gian: 2.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

JOI-kun đang nuôi \(N\) con cá trong một bể lớn. Các con cá được đánh số từ \(1\) đến \(N\).

JOI-kun có hai loại thức ăn \(A\)\(B\), với số lượng đủ nhiều. Khi thả một viên thức ăn vào bể, đúng một con cá ăn viên đó (bất kỳ con cá nào cũng có thể ăn được). Tùy vào loại thức ăn và con cá đã ăn, độ thông minh của các con cá thay đổi như sau:

  • Khi cá \(k\) (\(1 \le k \le N\)) ăn một viên thức ăn loại \(A\), độ thông minh của riêng cá \(k\) tăng đúng \(D\).
  • Khi cá \(k\) (\(1 \le k \le N\)) ăn một viên thức ăn loại \(B\), độ thông minh của tất cả các con cá có số thứ tự từ \(k\) trở lên đều tăng đúng \(1\).

Hiện tại, độ thông minh của mọi con cá đều bằng \(0\). JOI-kun muốn độ thông minh của cá \(i\) (\(1 \le i \le N\)) bằng giá trị lý tưởng \(C_i\), nhưng điều này không phải lúc nào cũng thực hiện được.

Vì vậy, cậu đặt ra \(Q\) câu hỏi. Câu hỏi thứ \(j\) (\(1 \le j \le Q\)) như sau:

  • Bắt đầu từ trạng thái mà độ thông minh của mọi con cá đều bằng \(0\), có khả năng nào để sau khi thực hiện thao tác thả một viên thức ăn vào bể không hoặc nhiều lần, độ thông minh của tất cả các con cá \(L_j,L_j+1,\ldots,R_j\) đồng thời bằng đúng giá trị lý tưởng tương ứng hay không? Nếu có, số viên thức ăn loại \(A\) ít nhất có thể đã thả vào bể là bao nhiêu?

Hãy viết chương trình trả lời các câu hỏi khi biết thông tin về đàn cá và các câu hỏi của JOI-kun.

Dữ liệu vào

Đọc từ đầu vào chuẩn theo định dạng:

N D
C_1 C_2 ... C_N
Q
L_1 R_1
L_2 R_2
...
L_Q R_Q

Dữ liệu ra

In \(Q\) dòng ra đầu ra chuẩn. Trên dòng thứ \(j\) (\(1 \le j \le Q\)), nếu có thể làm cho tất cả các con cá \(L_j,L_j+1,\ldots,R_j\) đạt đúng độ thông minh lý tưởng tương ứng, in số viên thức ăn loại \(A\) ít nhất cần thả vào bể. Nếu không thể, in -1.

Ràng buộc

  • \(1 \le N \le 300\,000\).
  • \(1 \le Q \le 300\,000\).
  • \(1 \le D \le 10^{12}\).
  • \(0 \le C_i \le 10^{12}\) (\(1 \le i \le N\)).
  • \(1 \le L_j \le R_j \le N\) (\(1 \le j \le Q\)).
  • Tất cả các giá trị đầu vào đều là số nguyên.

Phân nhóm

  1. 9 điểm: \(N \le 3\,000\), \(Q \le 3\,000\).
  2. 7 điểm: \(C_i \le 1\) với mọi \(1 \le i \le N\).
  3. 28 điểm: \(D=1\).
  4. 20 điểm: \(C_i \ge C_{i+1}\) với mọi \(1 \le i \le N-1\).
  5. 36 điểm: Không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
4 2
3 1 2 1
1
1 3
Output
1
Giải thích

Ví dụ, trong trường hợp sau, cuối cùng các con cá \(1,2,3\) đều đạt đúng độ thông minh lý tưởng, và chỉ có \(1\) viên thức ăn loại \(A\) được thả vào bể:

  • Ban đầu, độ thông minh của các con cá \(1,2,3,4\) lần lượt là \(0,0,0,0\).
  • JOI-kun thả một viên thức ăn loại \(B\), và cá \(3\) ăn nó. Độ thông minh trở thành \(0,0,1,1\).
  • JOI-kun thả một viên thức ăn loại \(A\), và cá \(1\) ăn nó. Độ thông minh trở thành \(2,0,1,1\).
  • Cuối cùng, JOI-kun thả một viên thức ăn loại \(B\), và cá \(1\) ăn nó. Độ thông minh trở thành \(3,1,2,2\).

Không thể làm cho cả ba con cá \(1,2,3\) đạt đúng độ thông minh lý tưởng mà không thả viên thức ăn loại \(A\) nào, nên kết quả là 1.

Ví dụ này thỏa mãn các ràng buộc của bài toán con \(1,5\).

Ví dụ 2

Input
4 2
0 1 0 1
3
1 2
2 3
1 1
Output
0
-1
0
Giải thích

Ví dụ này thỏa mãn các ràng buộc của bài toán con \(1,2,5\).

Ví dụ 3

Input
5 1
3 1 4 1 5
3
1 5
2 4
3 5
Output
5
3
3
Giải thích

Ví dụ này thỏa mãn các ràng buộc của bài toán con \(1,3,5\).

Ví dụ 4

Input
6 3
16 14 13 8 6 5
4
1 4
2 5
3 3
1 6
Output
9
8
0
-1
Giải thích

Ví dụ này thỏa mãn các ràng buộc của bài toán con \(1,4,5\).

Nguồn

Bản dịch tiếng Việt từ đề tiếng Anh và tiếng Nhật của JOI 2023/2024, vòng tuyển chọn mùa xuân, ngày thi thứ nhất, do Ủy ban Olympic Tin học Nhật Bản (JCIOI) cung cấp. Đề gốc và bản dịch được cung cấp theo giấy phép CC BY-SA 4.0.

Tệp

Bình luận

Mới nhất
Tải bình luận...

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

Kỳ thi: