Advertisement
tuki2501

V8SCORE.cpp

Sep 19th, 2022
794
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.37 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int N = 25;
  5.  
  6. int s, k, n;
  7. int b[N][N], a[N][N];
  8.  
  9. int curSum = 0;
  10. int res[N], prefixSum[N][N];
  11.  
  12. void print() {
  13.     cout << "YES" << '\n';
  14.     for (int i = 1; i <= k; i++) {
  15.         cout << res[i] << ' ';
  16.     }
  17.     cout << '\n';
  18.     exit(0);
  19. }
  20.  
  21. void brute(int i) {
  22.     for (int j = 1; j <= n; j++) {
  23.         if (
  24.           a[i][j] >= res[i - 1] &&
  25.           curSum + a[i][j] + prefixSum[k][0] - prefixSum[i][0] <= s &&
  26.           curSum + a[i][j] + prefixSum[k][n] - prefixSum[i][n] >= s
  27.         ) {
  28.             res[i] = a[i][j];
  29.             curSum += a[i][j];
  30.             if (i == k && curSum == s) print();
  31.             else brute(i + 1);
  32.             curSum -= a[i][j];  
  33.         }
  34.     }
  35. }
  36.  
  37. int main() {
  38.     cin.tie(0)->sync_with_stdio(0);
  39.     cin >> s >> k >> n;
  40.     for (int i = 1; i <= n; i++)
  41.     for (int j = 1; j <= k; j++) {
  42.         cin >> b[i][j];
  43.     }
  44.     for (int i = 1; i <= k; i++) {
  45.         for (int j = 1; j <= n; j++) {
  46.             a[i][j] = b[j][i];
  47.         }
  48.         sort(a[i] + 1, a[i] + n + 1);
  49.         for (int j = 1; j <= n; j++) {
  50.             prefixSum[i][j] = a[i][j] + prefixSum[i - 1][j];
  51.         }
  52.         // for (int j = 1; j <= n; j++) {
  53.         //     cout << a[i][j] << ' ';
  54.         // }
  55.         // cout << '\n';
  56.     }
  57.     brute(1);
  58.     cout << "NO" << '\n';
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement