Cổ phiếu VNI

Xem dạng PDF

Gửi bài giải

Điểm: 100,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: VNI.INP
Output: VNI.OUT

Nguồn bài:
HNOI2021C2
Dạng bài
Ngôn ngữ cho phép
C++, Pascal, Python

Bình mua bán cổ phiếu VNI trên thị trường chứng khoán. Giả sử giá của một cổ phiếu VNI trong vòng N ngày lần lượt là A1,A2,,AN. Biết rằng mỗi ngày Bình chỉ thực hiện một trong những hoạt động sau:

  1. Mua một cổ phiếu VNI;
  2. Bán số lượng cổ phiếu VNI bất kì mà Bình đang sở hữu;
  3. Không thực hiện bất kì giao dịch nào.

Yêu cầu: Bình thực hiện mua bán cổ phiếu VNI như thế nào để thu được lợi nhuận lớn nhất nếu anh ấy tham gia mua bán bắt đầu từ ngày thứ T cho trước?

Dữ liệu nhập vào từ file văn bản VNI.INP:

  • Dòng đầu tiên gồm số nguyên dương N (N105) là số ngày biết giá cổ phiếu;
  • Dòng thứ hai gồm N số nguyên dương A1,A2,,AN tương ứng là giá của một cổ phiếu VNI trong từng ngày (Ai109;1iN);
  • Dòng thứ ba gồm một số nguyên dương Q là số lượng truy vấn (Q105);
  • Q dòng sau, mỗi dòng gồm một số nguyên dương T (TN) thể hiện cho ngày đầu tiên mà Bình tham gia việc mua bán cổ phiếu VNI.

Kết quả ghi ra file văn bản VNI.OUT:

Q dòng, mỗi dòng gồm một số nguyên duy nhất là lợi nhuận lớn nhất mà Bình thu được ở mỗi truy vấn tương ứng.

Ràng buộc

  • 50% số test tương ứng với 50% số điểm thoả mãn: N1000; Q=1;
  • 30% số test khác tương ứng với 30% số điểm thoả mãn N105; Q=1;
  • 20% số test còn lại tương ứng với 20% số điểm không có ràng buộc gì thêm.

Ví dụ

Input
Copy
4
1 2 5 4
2
1
3
Output
Copy
7
0

Giải thích:

  • Bình bắt đầu tham gia mua bán VNI vào ngày 1:
    • Ngày 1: mua 1 VNI với giá là 1.
    • Ngày 2: mua 1 VNI với giá là 2.
    • Ngày 3: bán 2 VNI với giá là 5.
    • Ngày 4: không mua hay bán VNI vào ngày này.

Lợi nhuận thu được là: 12+2×5=7.

  • Bình bắt đầu tham gia mua bán VNI vào ngày 3:
    • Bình không mua bán VNI vào ngày 3 và ngày 4.

Lợi nhuận thu được là: 0.