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

Cuộc họp hiệu quả

Đề bài

Mô tả

Một cuộc họp có đúng n người tham dự, đánh số từ 1 đến n. Tại bất kỳ thời điểm nào, hai người bất kỳ có thể tách ra nói chuyện riêng với nhau. Cùng một cặp người có thể nói chuyện với nhau nhiều lần tuỳ ý.

Mỗi người có một mức độ cởi mở giới hạn. Mức độ cởi mở của người thứ i là số nguyên không âm ai: sau đúng ai lần nói chuyện, người này rời khỏi cuộc họp và không nói chuyện với ai nữa. Nếu ai=0 thì người thứ i rời đi ngay khi cuộc họp bắt đầu.

Cuộc họp được xem là hiệu quả nhất khi tổng số lần nói chuyện diễn ra là lớn nhất có thể.

Cho mảng a, hãy xác định những ai nói chuyện với ai để tổng số lần nói chuyện là lớn nhất.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t là số bộ dữ liệu.
  • Với mỗi bộ dữ liệu:
    • Dòng đầu chứa số nguyên n là số người dự họp.
    • Dòng thứ hai chứa n số nguyên a1,a2,,an là mức độ cởi mở của từng người.

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra:

  • Dòng đầu chứa số k là số lần nói chuyện tối đa có thể diễn ra.
  • k dòng tiếp theo, mỗi dòng chứa hai số nguyên ij (1i,jn, ij) là số hiệu hai người tham gia lần nói chuyện đó.

Nếu có nhiều đáp án, in ra đáp án nào cũng được.

Ràng buộc

  • 1t1000
  • 2n2·105
  • 0ai2·105
  • Tổng n trên tất cả các bộ dữ liệu không vượt quá 2·105.
  • Tổng tất cả các ai trên tất cả các bộ dữ liệu không vượt quá 2·105.

Ví dụ

Input Output Giải thích
4
2
2 3
3
1 2 3
4
1 2 3 4
3
0 0 2
2
2 1
2 1
3
3 2
3 1
2 3
5
4 3
4 2
3 4
1 2
3 4
0
Bộ 1: người 1 chỉ chịu được 2 lần nên tối đa 2 lần nói chuyện, người 2 còn dư 1 lượt nhưng không còn ai để nói. Bộ 4: chỉ người 3 còn lượt, không có bạn nói chuyện nên đáp án là 0.
4
2
6 2
3
0 0 2
5
8 2 0 1 1
5
0 1 0 0 6
2
1 2
1 2
0
4
1 2
1 2
1 4
1 5
1
5 2
Bộ 1: người 2 là nút thắt, chỉ 2 lần. Bộ 3: người 1 quá "trội" (8>2+0+1+1) nên số lần bị chặn bởi tổng của những người còn lại là 4.

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 csc 6.12.0.200 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 kotlinc 2.4.10 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 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 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0