Hướng dẫn giải của Điểm kinh nghiệm
Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người làm lời giải.
Nộp code mẫu trước khi tự giải được bài tập là một hành vi có thể bị ban.
Tác giả:
Code tham khảo
Subtask 2:
#include <bits/stdc++.h> using namespace std; const int MAXN = 200007; int n, d; long long c; long long a[MAXN]; int main() { cin >> n >> c >> d; for (int i = 0; i < n; i++) { cin >> a[i]; } sort(a, a + n, greater<long long>()); int l = 0, r = d + 2; while (l < r) { int m = l + (r - l + 1) / 2; long long tot = 0; for (int i = 0; i < d; i++) { if (i % m < n) {tot += a[i % m];} } if (tot >= c) { l = m; } else { r = m - 1; } } if (l == d + 2) { cout << "Infinity\n"; return 0; } if (l == 0) { cout << "Impossible\n"; return 0; } cout << l - 1 << '\n'; return 0; }
Bình luận