Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 25;
- int s, k, n;
- int b[N][N], a[N][N];
- int curSum = 0;
- int res[N], prefixSum[N][N];
- void print() {
- cout << "YES" << '\n';
- for (int i = 1; i <= k; i++) {
- cout << res[i] << ' ';
- }
- cout << '\n';
- exit(0);
- }
- void brute(int i) {
- for (int j = 1; j <= n; j++) {
- if (
- a[i][j] >= res[i - 1] &&
- curSum + a[i][j] + prefixSum[k][0] - prefixSum[i][0] <= s &&
- curSum + a[i][j] + prefixSum[k][n] - prefixSum[i][n] >= s
- ) {
- res[i] = a[i][j];
- curSum += a[i][j];
- if (i == k && curSum == s) print();
- else brute(i + 1);
- curSum -= a[i][j];
- }
- }
- }
- int main() {
- cin.tie(0)->sync_with_stdio(0);
- cin >> s >> k >> n;
- for (int i = 1; i <= n; i++)
- for (int j = 1; j <= k; j++) {
- cin >> b[i][j];
- }
- for (int i = 1; i <= k; i++) {
- for (int j = 1; j <= n; j++) {
- a[i][j] = b[j][i];
- }
- sort(a[i] + 1, a[i] + n + 1);
- for (int j = 1; j <= n; j++) {
- prefixSum[i][j] = a[i][j] + prefixSum[i - 1][j];
- }
- // for (int j = 1; j <= n; j++) {
- // cout << a[i][j] << ' ';
- // }
- // cout << '\n';
- }
- brute(1);
- cout << "NO" << '\n';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement