Mảng và đoạn

Đề bài

Mô tả

Cho dãy số nguyên a1,a2,,an và tập hợp m đoạn. Đoạn thứ j[lj;rj] với 1ljrjn.

Bạn được chọn một tập con bất kỳ (có thể rỗng) của tập m đoạn nói trên. Với mỗi đoạn được chọn, hãy giảm tất cả các phần tử trong đoạn đó của dãy a đi 1. Sau khi áp dụng tất cả các đoạn đã chọn, ta nhận được dãy mới b.

Hãy chọn tập con sao cho giá trị maxi=1nbimini=1nbi là lớn nhất có thể.

Nếu có nhiều phương án, in ra phương án bất kỳ.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên nm.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an.
  • m dòng tiếp theo, dòng thứ j chứa hai số nguyên ljrj mô tả đoạn thứ j.

Dữ liệu ra

  • Dòng đầu tiên: một số nguyên d — giá trị maxbiminbi lớn nhất.
  • Dòng thứ hai: một số nguyên q — số đoạn được chọn.
  • Dòng thứ ba: q số nguyên phân biệt c1,c2,,cq (theo thứ tự bất kỳ) — chỉ số các đoạn được chọn.

Nếu q=0, dòng thứ ba có thể để trống.

Ràng buộc

  • 1n300
  • 0m300
  • 106ai106
  • 1ljrjn

Ví dụ

Input Output Giải thích
5 4
2 -2 3 1 2
1 3
4 5
2 5
1 3
6
2
1 4
Chọn đoạn 1 và 4 (cả hai cùng là [1;3]). Dãy b=[0,4,1,1,2]. maxbminb=2(4)=6.
5 4
2 -2 3 1 4
3 5
3 4
2 4
2 5
7
2
3 4
Chọn đoạn 3 ([2;4]) và 4 ([2;5]). Dãy b=[2,4,1,1,3]. maxbminb=3(4)=7.
1 0
1000000
0
0
Không có đoạn nào nên dãy không thay đổi; maxmin=0.

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