Đội quân Pokémon
Nộp bài giải
Điểm:
7,00 (OI)
Giới hạn thời gian:
2.0s
Giới hạn bộ nhớ:
256M
Đầu vào:
stdin
Đầu ra:
stdout
Dạng bài
Ngôn ngữ cho phép
Ada, Algol, Assembly, Awk, C, C#, C++, D, Dart, Forth, Fortran, Go, Groovy, Java, Javascript, Kotlin, Lisp, Lua, Nim, ObjC, Pascal, Perl, PHP, Pike, Python, Racket, Ruby, Rust, Scheme, Scratch, Sed, TCL, Typescript, V, Zig
Cho dãy số nguyên đôi một phân biệt .
Với mọi dãy con (không nhất thiết liên tiếp, không rỗng) với , ta định nghĩa độ mạnh của dãy con đó là tổng đan dấu:
Bạn cần tìm độ mạnh lớn nhất có thể của một dãy con bất kỳ.
Sau đó có truy vấn. Mỗi truy vấn cho hai chỉ số và — hãy hoán đổi và , rồi in lại độ mạnh lớn nhất.
Dữ liệu vào
Dòng đầu chứa số nguyên dương — số bộ test.
Với mỗi bộ test:
- Dòng đầu chứa hai số và .
- Dòng thứ hai chứa số nguyên phân biệt ().
- dòng tiếp theo, mỗi dòng chứa hai số và ().
Dữ liệu ra
Với mỗi bộ test, in ra số nguyên: độ mạnh lớn nhất trước khi có thao tác hoán đổi, và sau mỗi thao tác hoán đổi.
Ràng buộc
- và các đôi một phân biệt trong mỗi bộ test.
- Tổng trên tất cả bộ test không vượt quá .
- Tổng trên tất cả bộ test không vượt quá .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 3 1 1 3 2 1 2 2 2 1 2 1 2 1 2 7 5 1 2 5 4 3 6 7 1 2 6 7 3 4 1 2 2 3 |
3 4 2 2 2 9 10 10 10 9 11 |
Bộ 1: dãy cho độ mạnh ; sau khi đổi và thì dãy là , chọn dãy con cho . Bộ 3: ban đầu chọn ; sau thao tác cuối, dãy là , chọn . |
| 1 4 2 4 1 3 2 1 4 2 3 |
6 5 6 |
Ban đầu , chọn . Đổi ra , độ mạnh tốt nhất là hoặc lấy chỉ phần tử kết hợp với cực tiểu trước nó — đáp án là . Đổi tiếp ra , chọn . |
Bình luận