amcbn

Butoi

Nov 9th, 2021
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.64 KB | None | 0 0
  1.  
  2. /* [A][M][C][B][N] / [K][R][I][P][6][8] */
  3. #include <bits/stdc++.h>
  4. #include <unordered_map>
  5. using namespace std;
  6. typedef long long ll;
  7. const char sp = ' ', nl = '\n';
  8. const int MOD = 9973;
  9. ifstream fin("butoi.in");
  10. ofstream fout("butoi.out");
  11.  
  12. int task, V, n, k, p;
  13. vector<int> f, minf;
  14. vector<int> v;
  15. int tot = 0, mini = 1e9;
  16. void bkt(int idx = 0) {
  17.     if (idx == f.size()) {
  18.         int ans = 0, ans2 = 0;
  19.         for (int i = 0; i < f.size(); ++i)
  20.             ans += f[i] * v[i], ans2 += f[i];
  21.         if (ans == V) {
  22.             tot++;
  23.             if (mini > ans2)
  24.                 minf = f, mini = ans2;
  25.         }
  26.     }
  27.     else {
  28.         for (int i = 0; i <= k; ++i) {
  29.             f[idx] = i;
  30.             bkt(idx + 1);
  31.         }
  32.     }
  33. }
  34.  
  35. int main() {
  36.     ios::sync_with_stdio(0);
  37.     cin.tie(0), cout.tie(0);
  38.     fin >> task >> V >> n >> k >> p;
  39.     v.resize(n);
  40.     for (int i = 0; i < n; ++i)
  41.         fin >> v[i];
  42.     if (task != 3) {
  43.         f.resize(v.size());
  44.         bkt();
  45.         if (task == 1)
  46.             fout << tot;
  47.         else
  48.             for (int& e : minf)
  49.                 fout << e << sp;
  50.     }
  51.     else {
  52.         for (int i = 1; i < n; ++i)
  53.             v[i] += v[i - 1];
  54.         int mini = -1;
  55.         for (int i = 0; i <= n - p; ++i) {
  56.             if (V % (v[i + p - 1] - (i ? v[i - 1] : 0)) == 0) {
  57.                 if (mini == -1)
  58.                     mini = i;
  59.                 else
  60.                     if (V / (v[i + p - 1] - (i ? v[i - 1] : 0)) < V / (v[mini + p - 1] - (mini ? v[mini - 1] : 0)))
  61.                         mini = i;
  62.             }
  63.         }
  64.         fout << mini + 1;
  65.     }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment