Lợi nhuận tối đa một giao dịch
Đề bài
Mô tả
Cho dãy giá cổ phiếu trong ngày liên tiếp. Bạn được phép thực hiện đúng một giao dịch: chọn ngày để mua với giá , sau đó chọn ngày để bán với giá , trong đó . Lợi nhuận thu được là .
Hãy tìm lợi nhuận lớn nhất có thể đạt được. Nếu mọi cách chọn đều cho lợi nhuận âm hoặc bằng , bạn có quyền không giao dịch và lợi nhuận khi đó là .
Có trường hợp test độc lập (multitest).
Dữ liệu vào
- Dòng đầu chứa số nguyên — số trường hợp test.
- Với mỗi trường hợp test:
- Dòng đầu chứa số nguyên .
- Dòng tiếp theo chứa số nguyên cách nhau bởi dấu cách.
Dữ liệu ra
In dòng, mỗi dòng là đáp án của trường hợp test tương ứng.
Ràng buộc
- Tổng qua tất cả các trường hợp test không vượt quá .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 2 6 7 1 5 3 6 4 5 7 6 4 3 1 |
5 0 |
Test 1: mua ngày 2 (giá 1), bán ngày 5 (giá 6), lợi nhuận . Test 2: dãy giảm đều, mọi giao dịch đều lỗ nên không giao dịch, đáp án . |
| 3 1 1000000000 4 1 2 3 4 5 3 3 3 3 3 |
0 3 0 |
Test 1: chỉ có ngày, không thể có cặp với lợi nhuận dương, đáp án (cho phép cũng cho ). Test 2: mua ngày 1, bán ngày 4, lợi nhuận . Test 3: mọi giá bằng nhau, lợi nhuận tối đa là . |
Ghi chú
Đáp án có thể vừa khít -bit (giá tối đa ), nhưng nên dùng kiểu nguyên đủ rộng và cẩn thận khi sử dụng kiểu không dấu.
Bình luận