Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* [A][M][C][B][N] / [K][R][I][P][6][8] */
- #include <bits/stdc++.h>
- #include <unordered_map>
- using namespace std;
- typedef long long ll;
- const char sp = ' ', nl = '\n';
- const int MOD = 9973;
- ifstream fin("butoi.in");
- ofstream fout("butoi.out");
- int task, V, n, k, p;
- vector<int> f, minf;
- vector<int> v;
- int tot = 0, mini = 1e9;
- void bkt(int idx = 0) {
- if (idx == f.size()) {
- int ans = 0, ans2 = 0;
- for (int i = 0; i < f.size(); ++i)
- ans += f[i] * v[i], ans2 += f[i];
- if (ans == V) {
- tot++;
- if (mini > ans2)
- minf = f, mini = ans2;
- }
- }
- else {
- for (int i = 0; i <= k; ++i) {
- f[idx] = i;
- bkt(idx + 1);
- }
- }
- }
- int main() {
- ios::sync_with_stdio(0);
- cin.tie(0), cout.tie(0);
- fin >> task >> V >> n >> k >> p;
- v.resize(n);
- for (int i = 0; i < n; ++i)
- fin >> v[i];
- if (task != 3) {
- f.resize(v.size());
- bkt();
- if (task == 1)
- fout << tot;
- else
- for (int& e : minf)
- fout << e << sp;
- }
- else {
- for (int i = 1; i < n; ++i)
- v[i] += v[i - 1];
- int mini = -1;
- for (int i = 0; i <= n - p; ++i) {
- if (V % (v[i + p - 1] - (i ? v[i - 1] : 0)) == 0) {
- if (mini == -1)
- mini = i;
- else
- if (V / (v[i + p - 1] - (i ? v[i - 1] : 0)) < V / (v[mini + p - 1] - (mini ? v[mini - 1] : 0)))
- mini = i;
- }
- }
- fout << mini + 1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment