Tổng truy vấn lớn nhất

Đề bài

Mô tả

Cho một mảng a gồm n phần tử (các phần tử được đánh chỉ số từ 1) và q truy vấn. Truy vấn thứ i là một cặp số nguyên li,ri, yêu cầu tính tổng các phần tử của mảng có chỉ số từ li đến ri.

Trước khi trả lời các truy vấn, bạn được phép sắp xếp lại mảng a theo một thứ tự bất kỳ (tức là hoán vị các phần tử). Thứ tự này được chọn một lần và dùng chung cho tất cả các truy vấn. Danh sách truy vấn không thay đổi.

Hãy tìm tổng lớn nhất có thể của các câu trả lời cho q truy vấn.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nq: số phần tử của mảng và số truy vấn.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an: các phần tử của mảng.
  • q dòng tiếp theo, dòng thứ i chứa hai số nguyên liri mô tả truy vấn thứ i.

Dữ liệu ra

In ra một số nguyên duy nhất: tổng lớn nhất có thể của các câu trả lời sau khi sắp xếp lại mảng một cách tối ưu.

Ràng buộc

  • 1n2·105
  • 1q2·105
  • 1ai2·105
  • 1lirin

Ví dụ

Input Output Giải thích
3 3
5 3 2
1 2
2 3
1 3
25 Vị trí 1 nằm trong 2 truy vấn, vị trí 2 nằm trong 3 truy vấn, vị trí 3 nằm trong 2 truy vấn. Đặt giá trị 5 vào vị trí bị đếm 3 lần, còn 32 vào hai vị trí còn lại: 5·3+3·2+2·2=25. Một cách sắp xếp tối ưu là 3 5 2.
5 3
5 2 4 1 3
1 5
2 3
2 3
33 Số lần mỗi vị trí bị đếm lần lượt là 1,3,3,1,1. Ghép hai giá trị lớn nhất 5,4 với hệ số 3, ba giá trị còn lại với hệ số 1: 5·3+4·3+3+2+1=33.

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