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
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.
![](https://rs.olm.vn/images/avt/0.png?1311)
Nếu co 12 người ko o vé thì 12x2=24 vé mà những người đầu đã mua 2 vé rồi thì mỗi người thêm 1 vé suy ra co 24 người + 12 người ko có vé = 36 người tất cả
![](https://rs.olm.vn/images/avt/0.png?1311)
Gọi: x là số người xếp hàng (ĐK: x nguyên dương)
y là số vé bán (y>0)
Vì mỗi người được mua 2 vé nên ta có phương trình : x-2y=0
Nếu mỗi người xếp hàng trước mua 3 vé thì 12 người sau sẽ không có vé: x-3y= -12
Từ (1) và (2) ta có hệ phương trình
\(\hept{\begin{cases}x-2y=0\\x-3y=-12\end{cases}}\):
Giải hệ ta được :\(\hept{\begin{cases}x=24\\y=12\end{cases}}\)
Vậy số người xếp hàng là 24 người
![](https://rs.olm.vn/images/avt/0.png?1311)
Người đàn ông đã đưa 4 tờ 25 xu nên nhân viên quầy vé biết ông muốn mua 2 vé vì nếu ông muốn mua 1 vé thì chỉ cần đưa 2 tờ 25 xu thôi.
![](https://rs.olm.vn/images/avt/0.png?1311)
I. Nội qui tham gia "Giúp tôi giải toán"
1. Không đưa câu hỏi linh tinh lên diễn đàn, chỉ đưa các bài mà mình không giải được hoặc các câu hỏi hay lên diễn đàn;
2. Không trả lời linh tinh, không phù hợp với nội dung câu hỏi trên diễn đàn.
3. Không "Đúng" vào các câu trả lời linh tinh nhằm gian lận điểm hỏi đáp.
Các bạn vi phạm 3 điều trên sẽ bị giáo viên của Online Math trừ hết điểm hỏi đáp, có thể bị khóa tài khoản hoặc bị cấm vĩnh viễn không đăng nhập vào trang web.
I. Nội qui tham gia "Giúp tôi giải toán"
1. Không đưa câu hỏi linh tinh lên diễn đàn, chỉ đưa các bài mà mình không giải được hoặc các câu hỏi hay lên diễn đàn;
2. Không trả lời linh tinh, không phù hợp với nội dung câu hỏi trên diễn đàn.
3. Không "Đúng" vào các câu trả lời linh tinh nhằm gian lận điểm hỏi đáp.
Các bạn vi phạm 3 điều trên sẽ bị giáo viên của Online Math trừ hết điểm hỏi đáp, có thể bị khóa tài khoản hoặc bị cấm vĩnh viễn không đăng nhập vào trang web.
![](https://rs.olm.vn/images/avt/0.png?1311)
đổi 15p= 1/4 giờ
gọi thời gian cần đi vs vận tốc cần tìm là x( giờ) đk : x <1/4
khi đi vs vận tốc 20km/h thì thời gian cần đi là
x-1/4
quãng đường đi khi đi vs vận tốc 20km/h là
20*(x-1/4)
Tương tự với khi đi với vận tốc = 12km/h
tìm ra phương trình là 12*(x+1/4)
xong cho 2 phương trình = nhau rồi tìm x
![](https://rs.olm.vn/images/avt/0.png?1311)
Giả sử 30 vé đều là vé trẻ em thì kiếm được:
40 000 x 30=1 200 000(đồng)
Số tiền hụt đi khi tất cả đều là vé trẻ em là:
1 920 000 - 1 200 000=720 000(đồng)
Số tiền hụt đi vì thay 1 vé người lớn bằng 1 vé trẻ em.Mỗi lần thay như thế thì số tiền người lớn hụt đi là:
80 000 - 40 000=40 000(đồng)
Số vé người lớn là:
720 000 : 40 000=18 (vé)
Số vé trẻ em là:
30-18=12(vé)
Đ/s:....
#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;
}