Bài tập môn Độc dược

Đề bài

Mô tả

n học sinh, mỗi học sinh được giao đúng một nhiệm vụ. Học sinh thứ i có độ lười ai, đồng thời nhiệm vụ ban đầu của học sinh đó có độ khó cũng bằng ai.

Các học sinh muốn phân phối lại nhiệm vụ sao cho mỗi học sinh vẫn làm đúng một nhiệm vụ và mỗi nhiệm vụ được giao cho đúng một học sinh (tức là ta gán các nhiệm vụ cho học sinh theo một hoán vị bất kỳ). Thời gian một học sinh hoàn thành một nhiệm vụ bằng tích của độ lười của học sinh đó với độ khó của nhiệm vụ được giao.

Hãy tìm tổng thời gian nhỏ nhất để hoàn thành tất cả các nhiệm vụ khi phân phối một cách tối ưu. In kết quả theo modulo 10007.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n là số học sinh (cũng là số nhiệm vụ).
  • n dòng tiếp theo, mỗi dòng chứa một số nguyên ai là độ lười của học sinh thứ i (cũng là độ khó của nhiệm vụ ban đầu của học sinh đó).

Dữ liệu ra

  • Một số nguyên duy nhất: tổng thời gian nhỏ nhất để hoàn thành tất cả nhiệm vụ, lấy theo modulo 10007.

Ràng buộc

  • 1n100000
  • 1ai100000

Ví dụ

Input Output Giải thích
2
1
3
6 Đổi nhiệm vụ cho nhau: 1·3+3·1=6.
4
2
3
5
7
58 Ghép giá trị nhỏ nhất với lớn nhất: 2·7+3·5+5·3+7·2=58.
5
5
4
3
2
1
35 1·5+2·4+3·3+4·2+5·1=35.

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 1.26.3 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