• 接水问题
  • 好难!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  • @ 2025-4-26 14:54:43

#include #include #include

using namespace std;

int main() { int n, m; cin >> n >> m; vector w(n); for (int i = 0; i < n; ++i) { cin >> w[i]; }

priority_queue<int, vector<int>, greater<int>> pq;

// 初始时,前m个同学开始接水
for (int i = 0; i < min(m, n); ++i) {
    pq.push(w[i]);
}

// 处理剩余同学
for (int i = m; i < n; ++i) {
    int earliest = pq.top();
    pq.pop();
    pq.push(earliest + w[i]);
}

// 总时间是堆中最大的时间
int total_time = 0;
while (!pq.empty()) {
    total_time = max(total_time, pq.top());
    pq.pop();
}

cout << total_time << endl;

return 0;

}

0 条评论

目前还没有评论...

信息

ID
234
时间
1000ms
内存
256MiB
难度
5
标签
(无)
递交数
30
已通过
15
上传者