trang chủ / đề bài / dhbb13_cseq

Biến đổi dãy số

Đề bài

Mô tả

Xét dãy số nguyên a1,a2,…,an và các phép biến đổi có dạng C(i,j) trên dãy số với ý nghĩa: đổi dấu tất cả các phần tử từ vị trí thứ i đến vị trí thứ j (1≤i≤j≤n).

Ví dụ, với dãy 1,2,−3,4,5,−6 nếu biến đổi C(2,4) ta nhận được dãy 1,−2,3,−4,5,−6.

Dễ thấy, có tất cả n×(n+1)2 phép biến đổi trên dãy gồm n phần tử. Một phép biến đổi được gọi là tối ưu nếu sau khi thực hiện phép biến đổi ta nhận được dãy có tổng các phần tử là lớn nhất trong tất cả các phép biến đổi. Phải thực hiện đúng một phép biến đổi, tức là luôn có ít nhất một phần tử bị đổi dấu.

Yêu cầu: Cho dãy số nguyên a1,a2,…,an, hãy tìm phép biến đổi tối ưu.

Dữ liệu vào

  • Dòng đầu chứa số nguyên dương n.
  • Dòng thứ hai chứa n số nguyên a1,a2,…,an (|ai|≤109).

Dữ liệu ra

Gồm một dòng, chứa một số nguyên là tổng các phần tử của dãy sau khi thực hiện phép biến đổi tối ưu.

Ràng buộc

  • 1≤n≤300000.
  • |ai|≤109.

Subtasks

  • Các test ứng với 40% số điểm có n≤300.
  • Các test khác ứng với 30% số điểm có n≤3000.
  • Các test còn lại ứng với 30% số điểm có n≤300000.

Ví dụ

Input Output Giải thích
6
1 2 -3 4 5 -6
15 Biến đổi C(3,6) được dãy 1,2,3,−4,−5,6 có tổng 3; biến đổi tối ưu là C(6,6), được dãy 1,2,−3,4,5,6 có tổng 15.
4
3 1 4 2
8 Ví dụ bổ sung. Mọi phần tử đều dương nhưng vẫn phải đổi dấu ít nhất một phần tử: biến đổi tối ưu là C(2,2), được dãy 3,−1,4,2 có tổng 8.
4
-5 1 -5 2
11 Ví dụ bổ sung. Biến đổi tối ưu là C(1,3), được dãy 5,−1,5,2 có tổng 11. Đoạn được đổi dấu có thể chứa cả phần tử dương.

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