trang chủ / bài tập / avgscore

Điểm trung bình

Đề bài

Mô tả

Bạn có n điểm số được ghi lại từ hai môn học. Mỗi điểm là một số nguyên từ 1 đến 5, nhưng không ghi rõ điểm đó thuộc môn nào.

Bạn cần gán mỗi điểm cho một trong hai môn sao cho:

  • Môn thứ nhất có đúng a điểm,
  • Môn thứ hai có đúng b điểm (với a+b=n),
  • Tổng x1+x2 là lớn nhất, trong đó x1 là điểm trung bình của môn thứ nhất và x2 là điểm trung bình của môn thứ hai.

Điểm trung bình của một môn là tổng các điểm thuộc môn đó chia cho số lượng điểm của môn (phép chia thực, không làm tròn).

Nếu có nhiều cách gán cho cùng giá trị x1+x2 lớn nhất, hãy in ra dãy nhãn có thứ tự từ điển nhỏ nhất.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — số lượng điểm.
  • Dòng thứ hai chứa hai số nguyên ab.
  • Dòng thứ ba chứa n số nguyên t1,t2,,tn — các điểm số.

Dữ liệu ra

In ra dãy n số nguyên f1,f2,,fn, trong đó fi{1,2} là số hiệu môn học mà điểm thứ i được gán vào. Nếu có nhiều đáp án tối ưu, in ra dãy có thứ tự từ điển nhỏ nhất.

Ràng buộc

  • 2n105
  • 1a,bn1a+b=n
  • 1ti5

Ví dụ

Input Output Giải thích
5
3 2
4 4 5 4 4
1 1 2 1 2 Môn 1 gồm các điểm 4, 4, 4 (trung bình 4); môn 2 gồm 5, 4 (trung bình 4.5). Tổng =8.5 là lớn nhất.
4
2 2
3 5 4 5
1 1 2 2 Khi a=b mọi cách chia đều cho cùng tổng trung bình, nên chọn dãy nhãn nhỏ nhất theo thứ tự từ điển.
6
1 5
4 4 4 5 4 4
2 2 2 1 2 2 Môn 1 chỉ có 1 điểm nên nhận điểm lớn nhất là 5 để tối đa hoá trung bình.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 GO groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0