Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include<algorithm>
- #include<stdio.h>
- int n, nom[100], a, wyniki[10000], wyniki2[10000], q, pytanka[10000], b;
- using namespace std;
- int main() {
- scanf("%d", &n);
- for (int i = 0; i < n; ++i) {
- scanf("%d", &nom[i]);
- }
- // sort(nom, nom + n, greater<int>());
- for (int i = 0; i < 10000; ++i) {
- wyniki[i] = 100000;
- }
- wyniki[0] = 0;
- for (int i = 0; i < n; ++i) {
- a = nom[i];
- for (int j = 1; j < 10000 / a; ++j) {
- if (wyniki[a * j] > wyniki[a * j - a] + 1) {
- wyniki[a * j] = wyniki[a * j - a] + 1;
- wyniki2[a * j] = a;
- }
- if (wyniki[j] != 100000 && wyniki[j + a] > wyniki[j] + 1) {
- wyniki[j + a] = wyniki[j] + 1;
- wyniki2[j + a] = a;
- }
- }
- }
- /*
- for(int i=0; i<20; ++i)
- {
- cout<<wyniki[i]<<" ";
- }
- cout<<endl<<endl;
- for(int i=0; i<20; ++i)
- {
- cout<<wyniki2[i]<<" ";
- }
- */
- scanf("%d", &q);
- for (int i = 0; i < q; ++i) {
- scanf("%d", &pytanka[i]);
- }
- for (int i = 0; i < q; ++i) {
- b = pytanka[i];
- /* if(wyniki[b]==100000)
- {
- printf("-1");
- }*/
- {
- int licznik = b;
- printf("%d", wyniki[b]);
- while (licznik != 0) {
- printf(" %d", wyniki2[licznik]);
- licznik -= wyniki2[licznik];
- }
- printf("\n");
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement