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

Chia đội công bằng

Đề bài

Mô tả

n bạn nhỏ chơi bóng đá, mỗi bạn có một chỉ số kỹ năng không âm ai.

Bạn cần chia n bạn thành hai đội sao cho thỏa mãn đồng thời ba điều kiện:

  • Mỗi bạn thuộc đúng một trong hai đội (tức x+y=n, trong đó x là số người ở đội 1 và y là số người ở đội 2).
  • Số lượng thành viên hai đội chênh nhau không quá 1: |xy|1.
  • Tổng kỹ năng của hai đội chênh nhau không vượt quá kỹ năng của người chơi giỏi nhất: |iT1aijT2aj|max1knak.

Dữ liệu đảm bảo luôn tồn tại cách chia hợp lệ. Nếu có nhiều cách chia thỏa mãn, in ra một cách bất kỳ.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — số bạn chơi bóng.
  • Dòng thứ hai chứa n số nguyên dương a1,a2,,an.

Dữ liệu ra

  • Dòng đầu in số nguyên x — số bạn ở đội 1.
  • Dòng thứ hai in x số nguyên — chỉ số (đánh số từ 1 theo thứ tự xuất hiện trong input) của các bạn thuộc đội 1.
  • Dòng thứ ba in số nguyên y — số bạn ở đội 2.
  • Dòng thứ tư in y số nguyên — chỉ số của các bạn thuộc đội 2.

Các chỉ số trong cùng một đội có thể in theo thứ tự bất kỳ.

Ràng buộc

  • 2n105
  • 1ai104

Ví dụ

Input Output Giải thích
3
1 2 1
2
1 2
1
3
|21|=11, tổng kỹ năng đội 1 là 1+2=3, đội 2 là 1, chênh lệch 2max=2.
5
2 3 3 1 1
3
4 1 3
2
5 2
Đội 1 có chỉ số {4,1,3} với tổng kỹ năng 1+2+3=6; đội 2 có {5,2} với tổng 1+3=4; chênh lệch 2max=3.

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.400 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0