K
Khách

Hãy nhập câu hỏi của bạn vào đây, nếu là tài khoản VIP, bạn sẽ được ưu tiên trả lời.

Tuyến đường sắt từ thành phố A đến thành phố B đi qua một số nhà ga. Tuyến đường có thể biểu diễn bởi một đoạn thẳng, các nhà ga là các điểm trên đó. Tuyến đường bắt đầu từ A và kết thúc ở B, vì thế các nhà ga sẽ được đánh số bắt đầu từ A (có số hiệu là 1) và B

là nhà ga cuối cùng.

Giá vé đi lại giữa hai nhà ga chỉ phụ thuộc vào khoảng cách giữa chúng. Cách tính giá vé như sau:

Khoảng cách giữa hai nhà ga (X

)

Khoảng cách 0<X≤

L1 → Giá vé C1

Khoảng cách 0<X≤

L2 → Giá vé C2

Khoảng cách 0<X≤

L3 →

Giá vé C3

Nghĩa là với các giá vé C1

, C2, C3 tương ứng bạn sẽ đi quảng đường tối đa là L1, L2, L3

.

Vé để đi thẳng từ nhà ga này đến nhà ga khác chỉ có thể đặt mua nếu khoảng cách giữa chúng không vượt quá L3

. Vì thế nhiều khi để đi từ nhà ga này đến nhà ga khác ta phải đặt mua một số vé. Hơn thế nữa, nhân viên đường sắt yêu cầu hành khách chỉ được giữ đúng một vé khi đi trên tàu và vé đó sẽ bị huỷ khi hành khách xuống tàu.

Yêu cầu: Tìm cách đặt mua vé để đi lại giữa hai nhà ga cho trước với chi phí mua vé là nhỏ nhất.

Input

Dòng đầu tiên ghi các số nguyên L1

, L2, L3, C1, C2, C3 (1≤ L1 ≤ L2 ≤ L3 ≤109; 1≤ C1 ≤ C2 ≤ C3 ≤109

) theo đúng thứ tự liệt kê ở trên.

Dòng thứ hai chứa số lượng nhà ga N

(2≤N≤100000

)

Dòng thứ ba ghi hai số nguyên s

, f

là các chỉ số của hai nhà ga cần tìm cách đặt mua vé với chi phí nhỏ nhất để đi lại giữa chúng.

Dòng thứ i

trong số N - 1 dòng tiếp theo ghi số nguyên là khoảng cách từ nhà ga A (ga 1) đến nhà ga thứ i + 1

.

Output

Gồm 1

dòng duy nhất ghi chi phí nhỏ nhất tìm được.

Sample Input

3 6 8 20 30 40 7 2 6 3 7 8 13 15 23

Sample Output

70

1
29 tháng 7 2021

undefined

c++:

undefined

29 tháng 7 2021

Thank you

 

Viết chương trình C++.Có n người xếp thành hàng để mua vé. Thời gian bán vé cho người thứ i là ti . Nhân viên bán vé mỗi lần chỉ bán vé cho một người, người này mua vé xong mới đến lượt người kế tiếp. Trong xấp vé mà nhân viên đang bán có một vé cặp (gồm 2 vé) và vé cặp này phải bán cho một người với thời gian bán vẫn không thay đổi, tức là nếu người thứ i mua một vé với...
Đọc tiếp

Viết chương trình C++.Có n người xếp thành hàng để mua vé. Thời gian bán vé cho người thứ i là ti . Nhân viên bán vé mỗi lần chỉ bán vé cho một người, người này mua vé xong mới đến lượt người kế tiếp. Trong xấp vé mà nhân viên đang bán có một vé cặp (gồm 2 vé) và vé cặp này phải bán cho một người với thời gian bán vẫn không thay đổi, tức là nếu người thứ i mua một vé với thời gian ti thì khi mua vé cặp này vẫn tốn thời gian là ti. Vì mỗi người chỉ có nhu cầu mua một vé nên khi một người nào đó mua vé cặp này thì anh ta sẽ nhượng lại một vé cho người đứng phía sau mình, và người được nhượng vé này sẽ rời khỏi hàng cùng với người phía trước mà không phải chờ mua vé nữa. Yêu cầu: Hãy cho biết nhân viên bán vé phải bán chiếc vé cặp cho người nào để tổng thời gian bán vé là ít nhất. Dữ liệu vào: Cho từ tệp văn bản TICKET.INP gồm hai dòng: • Dòng thứ nhất ghi số nguyên dương n (2

1
20 tháng 11 2023

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

struct Person {
    int index;  // Vị trí của người trong hàng
    int time;   // Thời gian mua vé của người
};

bool compareByTime(const Person& a, const Person& b) {
    return a.time < b.time;
}

int main() {
    // Đọc dữ liệu từ tệp TICKET.INP
    std::ifstream inputFile("TICKET.INP");
    if (!inputFile.is_open()) {
        std::cerr << "Khong the mo tep TICKET.INP" << std::endl;
        return 1;
    }

    int n;
    inputFile >> n;

    std::vector<Person> people;

    for (int i = 1; i <= n; ++i) {
        Person person;
        person.index = i;
        inputFile >> person.time;
        people.push_back(person);
    }

    // Đóng tệp TICKET.INP
    inputFile.close();

    // Sắp xếp danh sách người theo thời gian mua vé tăng dần
    std::sort(people.begin(), people.end(), compareByTime);

    // Tìm người mua vé cặp để tổng thời gian bán vé là ít nhất
    int totalTime = 0;
    int minTotalTime = INT_MAX;
    int bestPairIndex = -1;

    for (int i = 0; i < n - 1; ++i) {
        totalTime += people[i].time;

        if (totalTime + people[i + 1].time < minTotalTime) {
            minTotalTime = totalTime + people[i + 1].time;
            bestPairIndex = i;
        }
    }

    // Ghi kết quả ra màn hình
    std::cout << "Nguyen vien ban ve can ban ve cap cho nguoi thu: " << people[bestPairIndex + 1].index << std::endl;

    return 0;
}

31 tháng 7 2023

Tham khảo!

Theo chương trình ở Hình 1, nếu gia đình em đi xem phim thì phải trả 60000x4 = 240000 VNĐ (với gia đình 4 người).

Nếu đi xem phim trong tuần thì phải trả 40000x4 = 160000 VNĐ

→ Chương trình ở Hình 1 không tính đúng.

9 tháng 4 2023

Pascal ạ

 

D
datcoder
CTVVIP
14 tháng 10 2023

1 - b

2 - a

`1 - b`

`2 - c`

`3-a`