trang chủ / đề bài / maximize

Cực đại hóa

Đề bài

Mô tả

Ban đầu bạn có một đa tập S rỗng. Cần xử lý Q truy vấn thuộc hai loại:

  1. 1 x : thêm số nguyên dương x vào S. Dữ liệu đảm bảo x không nhỏ hơn bất kỳ phần tử nào đang có trong S, tức là các giá trị được thêm vào theo thứ tự không giảm.
  2. 2 : chọn một tập con khác rỗng s của S sao cho giá trị

max(s)−avg(s)

là lớn nhất có thể, rồi in ra giá trị lớn nhất đó. Ở đây max(s) là phần tử lớn nhất của s, còn avg(s) là trung bình cộng các phần tử của s.

Vì S là đa tập nên s cũng là đa tập: một giá trị xuất hiện c lần trong S có thể được lấy tối đa c lần vào s.

Truy vấn đầu tiên luôn thuộc loại 1, nên S không bao giờ rỗng khi gặp truy vấn loại 2.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên Q: số lượng truy vấn.
  • Q dòng tiếp theo, mỗi dòng mô tả một truy vấn: hoặc gồm hai số nguyên 1 x, hoặc gồm một số nguyên 2.

Dữ liệu ra

Với mỗi truy vấn loại 2, in ra trên một dòng riêng giá trị lớn nhất tìm được.

Đáp án được chấp nhận nếu sai số tuyệt đối hoặc sai số tương đối so với đáp án đúng không vượt quá 10−6.

Ràng buộc

  • 1≤Q≤5·105
  • 1≤x≤109
  • Mỗi giá trị được thêm vào không nhỏ hơn mọi giá trị đang có trong S.

Ví dụ

Input Output Giải thích
4
1 1
1 4
1 5
2
2.000000000 Lúc truy vấn, S={1,4,5}. Chọn s={1,5} cho 5−3=2. Chọn cả ba phần tử chỉ cho 5−103≈1.67, còn s={4,5} cho 0.5. Vậy đáp án là 2.
6
1 3
2
1 4
2
1 8
2
0.000000000
0.500000000
3.000000000
Với S={3} chỉ có một tập con nên đáp án là 3−3=0. Với S={3,4}, chọn cả hai cho 4−3.5=0.5. Với S={3,4,8}, chọn cả ba cho 8−5=3.
9
1 35
2
2
1 45
1 58
2
2
2
1 100
0.000000000
0.000000000
12.000000000
12.000000000
12.000000000
Hai truy vấn đầu ứng với S={35} nên đáp án là 0. Ba truy vấn sau ứng với S={35,45,58}: chọn cả ba cho 58−46=12, tốt hơn s={35,58} (được 11.5). Truy vấn loại 1 cuối cùng không sinh ra dòng kết quả nào.

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.402 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.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0