Phá huỷ mảng

Đề bài

Mô tả

Cho một mảng a1,a2,,an gồm n số nguyên không âm và một hoán vị p1,p2,,pn của các số từ 1 đến n chỉ định thứ tự phá huỷ các phần tử.

Tại bước thứ i (với i=1,2,,n), phần tử ở vị trí pi bị phá huỷ. Sau mỗi bước, bạn cần tìm đoạn con liên tiếp của mảng sao cho đoạn đó không chứa phần tử nào đã bị phá huỷtổng các phần tử trong đoạn là lớn nhất có thể. Tổng của đoạn rỗng được quy ước bằng 0.

In ra giá trị tổng lớn nhất sau mỗi bước phá huỷ.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — độ dài mảng.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an — các phần tử của mảng.
  • Dòng thứ ba chứa hoán vị p1,p2,,pn — thứ tự phá huỷ.

Dữ liệu ra

In ra n dòng. Dòng thứ i chứa tổng lớn nhất của một đoạn con liên tiếp không bị phá huỷ, sau khi đã thực hiện i thao tác phá huỷ đầu tiên.

Ràng buộc

  • 1n105
  • 0ai109
  • p là hoán vị của 1,2,,n.

Ví dụ

Input Output Giải thích
4
1 3 2 5
3 4 1 2
5
4
3
0
Bước 1: phá huỷ vị trí 3 → mảng 1 3 * 5, đoạn tốt nhất là 5 (tổng 5). Bước 2: phá huỷ vị trí 4 → 1 3 * *, đoạn 1 3 (tổng 4). Bước 3: phá huỷ vị trí 1 → * 3 * *, đoạn 3. Bước 4: tất cả bị phá huỷ, đáp án 0.
5
1 2 3 4 5
4 2 3 5 1
6
5
5
1
0
Sau khi phá huỷ vị trí 4, mảng còn 1 2 3 * 5, đoạn tốt nhất là 1 2 3 với tổng 6.
8
5 5 4 4 6 6 5 5
5 2 8 7 1 3 4 6
18
16
11
8
8
6
6
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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0