Dino viết một dãy số nguyên có n phần tử lên trên bảng, lần lượt xếp thành một hàng. Mỗi lần, Dino dùng phấn gạch bỏ đi một số trên bảng theo thứ tự tùy ý của Dino. Sau n lượt, Dino đã gạch hết tất cả các số trong dãy.
Trước mỗi lần gạch, Dino muốn bạn tìm dãy con liên tiếp có tổng lớn nhất mà không chứa những số đã được gạch. Hãy in ra tổng của dãy con liên tiếp đó.
Dữ liệu vào:
+ Dòng đầu tiên chứa \(n\ (1 \leq n \leq 10^{5})\).
+ Dòng thứ hai chứa \(n\) số nguyên không vượt quá \(10^{9}\): dãy số ban đầu được Dino viết lên bảng.
+ Dòng thứ ba chứa \(n\) số nguyên: \(p_{1},\ p_{2},\ \ldots,\ p_{N}\), với \(p_{i}\) là vị trí của phần tử được xóa trong lượt thứ \(i\). \((1 \leq p_{i} \leq n\), \(\forall\ i,\ j:p_{i} eq p_{j}).\)
Kết quả:
+ Dòng thứ \(i\), in ra kết quả tìm được trước khi Dino xóa số thứ \(i\) trong dãy.
Giới hạn:
+ 30% số điểm: \(n \leq 5000\).
+ 70% số điểm còn lại không ràng buộc gì thêm
Ví dụ
Input | Output | Giải thích |
---|---|---|
5 6 1 2 3 2 2 5 1 4 3 | 14 7 6 5 2 | - Bước 1: \(\lbrack 6\ 1\ 2\ 3\ 2\rbrack\) Chọn đoạn \(\lbrack 1,\ 5\rbrack\) – Tổng \(14\) - Bước 2: \(\lbrack 6\ x\ 2\ 3\ 2\rbrack\) Chọn đoạn \(\lbrack 3,\ 5\rbrack\ \)– Tổng \(7\) - Bước 3: \(\lbrack 6\ x\ 2\ 3\ x\rbrack\) Chọn đoạn \(\lbrack 1,\ 1\rbrack\) – Tổng \(6\) - Bước 4: \(\lbrack x\ x\ 2\ 3\ x\rbrack\) Chọn đoạn \(\lbrack 3,\ 4\rbrack\) – Tổng \(5\) - Bước 5: \(\lbrack x\ x\ 2\ x\ x\rbrack\) Chọn đoạn \(\lbrack 3,\ 3\rbrack\) – Tổng \(2\) |
Code tích cực |
---|
Trong 24h |
|
Trong 7 ngày |
|
Trong 30 ngày |
|
Thống kê |
---|
AC/Sub: 97887/180710 Pascal: 17121 C++: 130348 Python: 33199 Lượt xem/tải tests: 38907 |