Hệ thống thi (OLP MT&TN lần 7)

Xem PDF



Tác giả:
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, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2000 Thời gian: 1.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Nhằm bồi dưỡng tài năng công nghệ thông tin và thử nghiệm nền tảng trực tuyến mới, Việt đứng ra tổ chức một kỳ thi lập trình với những quy chế tính điểm đặc biệt. Thể lệ của kỳ thi được quy định chi tiết như sau:

  • Kỳ thi diễn ra trong vòng \(T\) phút, bao gồm \(N\) bài toán. Hệ số điểm cơ bản của toàn bộ kỳ thi là \(S\).
  • Bài toán thứ \(i\) có hệ số điểm riêng của bài là \(P_i\). Điểm số tối đa mà một thí sinh có thể đạt được cho bài toán này là \(\Sigma_i = S \cdot P_i\).
  • Hệ thống áp dụng cơ chế giảm điểm theo thời gian. Cụ thể, nếu thí sinh hoàn thành bài toán thứ \(i\) tại thời điểm \(t_i\) (\(1 \le t_i \le T\), tính bằng phút kể từ lúc kỳ thi bắt đầu), điểm số nhận được cho bài toán đó sẽ là \(\Sigma_i - t_i \cdot P_i\). Nói cách khác, sau mỗi một phút trôi qua, số điểm khả thi của bài toán thứ \(i\) sẽ bị trừ đi một lượng bằng đúng \(P_i\).

Hàn là một thí sinh tham gia kỳ thi này. Với kinh nghiệm thi đấu phong phú, sau khi đọc toàn bộ đề, Hàn ước lượng được chính xác năng lực của bản thân đối với từng bài toán:

  • Hàn thi đấu với độ tập trung cao độ: mỗi khi bắt tay vào giải một bài toán, cậu sẽ làm liền mạch cho đến khi hoàn thành bài đó rồi mới chuyển sang bài khác, không có khoảng nghỉ và không giải song song nhiều bài cùng lúc.
  • Hàn cần đúng \(a_i\) phút để hoàn thành trọn vẹn bài toán thứ \(i\). Vì thế, nếu cậu làm các bài trước đó trong vòng \(t\) phút và bắt đầu giải bài \(i\), cậu sẽ hoàn thành tại thời điểm \(t + a_i\).

Yêu cầu: Với giới hạn thời gian \(T\) phút của kỳ thi, hãy giúp Hàn xây dựng chiến thuật: chọn ra một tập các bài toán và sắp xếp thứ tự giải chúng sao cho tổng số điểm giành được là lớn nhất có thể.

Input

  • Dòng đầu tiên chứa ba số nguyên \(N, T\), và \(S\) (\(1 \le N \le 5 \cdot 10^5; 1 \le T \le 2000; 1 \le S \le 10^9\)) lần lượt là số lượng bài toán, thời lượng kỳ thi và hệ số điểm cơ bản.
  • Dòng thứ hai chứa \(N\) số nguyên dương \(a_1, a_2, \dots, a_N\) (\(a_i \le T\) với mọi \(1 \le i \le N\)), trong đó \(a_i\) là thời gian Hàn cần để hoàn thành bài toán thứ \(i\).
  • Dòng thứ ba chứa \(N\) số nguyên dương \(P_1, P_2, \dots, P_N\) (\(P_i \le T\) với mọi \(1 \le i \le N\)), trong đó \(P_i\) là hệ số điểm của bài toán thứ \(i\).

Output

  • Dòng đầu tiên in ra hai số nguyên \(k\)\(X\), lần lượt là số bài toán Hàn lựa chọn để giải và tổng số điểm tối đa đạt được.
  • Dòng thứ hai in ra \(k\) số nguyên phân biệt \(p_1, p_2, \dots, p_k\) (\(1 \le p_i \le N\)) thể hiện thứ tự các bài toán mà Hàn sẽ thực hiện. Trong trường hợp \(k = 0\), thí sinh bỏ trống dòng này.
  • Trong trường hợp có nhiều chiến thuật khác nhau cùng đạt được số điểm tối đa, bạn được phép in ra một phương án bất kỳ.

Example

Test 1

Input
6 120 250
1 2 3 8 10 13
2 4 5 9 11 14
Output
6 10298
1 2 3 4 5 6

Scoring

  • Subtask \(1\) (\(12\) điểm): \(P_i = P_1\) với mọi \(i\).
  • Subtask \(2\) (\(15\) điểm): \(N \le 20\).
  • Subtask \(3\) (\(21\) điểm): \(a_1 + a_2 + \dots + a_n \le T \le S\).
  • Subtask \(4\) (\(25\) điểm): \(N \le 5000\).
  • Subtask \(5\) (\(27\) điểm): Không có ràng buộc nào thêm.

Lưu ý: Kết quả chấm các Subtask 1, 3 và 5 sẽ được ẩn đi trong quá trình thi.

Bình luận

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

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