Nghệ nhân nấu ăn Tư Mập có thể sử dụng hệ thống gồm n bếp điện để thực hiện nấu món ăn khiến bà được vinh danh, đó là món “gato hải sản”. Thời gian để thực hiện nấu một suất ăn như vậy trên các bếp điện tương ứng là t1, t2, …, tn giây.
Yêu cầu: Cho biết S là số lượng thực khách cần phục vụ, hãy xác định thời gian tối thiểu cần thiết để Nghệ nhân Tư Mập có thể nấu xong S suất ăn trên hệ thống bếp điện của khách sạn. Để nấu mỗi suất ăn chỉ được sử dụng một bếp.
Dữ liệu: vào từ tệp văn bản SEAFOOD.INP gồm:
- Dòng đầu tiên chứa số lượng suất ăn S (0 < S < 1015) và số lượng bếp điện n ( 0 < n < 20)
- Dòng thứ hai chứa n số nguyên dương t1, t2,..., tn, mỗi số nhỏ hơn 500.
Kết quả: ghi vào tệp văn bản SEAFOOD.OUT duy nhất một số nguyên là thời gian tối thiểu tìm được tính bằng giây.
Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
#include <bits/sdc++.h>
using namespace std;
bool canCookInTime(const vector<long long>& cookTimes, long long S, long long time) {
long long totalMeals = 0;
for (long long t : cookTimes) {
totalMeals += time / t;
if (totalMeals >= S) return true;
}
return false;
}
long long findMinimumTime(long long S, const vector<long long>& cookTimes) {
long long left = 1, right = *min_element(cookTimes.begin(), cookTimes.end()) * S;
while (left < right) {
long long mid = left + (right - left) / 2;
if (canCookInTime(cookTimes, S, mid)) right = mid;
else left = mid + 1;
}
return left;
}
int main() {
long long S, n;
input >> S >> n;
vector<long long> cookTimes(n);
for (long long i = 0; i < n; i++) input >> cookTimes[i];
output << findMinimumTime(S, cookTimes);
return 0;
}
Hãy giúp mọi người biết câu trả lời này thế nào?
cho mình hỏi ý tưởng code bài là gì vậy ạ
Hãy giúp mọi người biết câu trả lời này thế nào?
Bảng tin