Untitled

 avatar
unknown
plain_text
4 years ago
1.2 kB
6
Indexable
#include <bits/stdc++.h>
using namespace std;
vector<long long> denomination;
long long num ;
long long dp[3000000] = { 0 };

long long minCoins(long long change){
    for (int i = 1; i <= change; i++){
        for (int j = 0; j < num; j++){
            if(denomination[j] <= i){
                if(dp[i-denomination[j]] != INT_MAX && dp[i-denomination[j]]+1 < dp[i]){
                    dp[i] = dp[i-denomination[j]] + 1;
				}
            }
        }
    }
    return dp[change];
}

int main(){
    cin.tie(0);
    cin.sync_with_stdio(0);
    cin>>num;
    for(int i = 0 ; i < num ; i ++){
        long long a;
        cin>>a;
        denomination.push_back(a);
    }
    long long orders;
    cin>>orders;


    for (int i = 0; i <= 3000000; i++){
        dp[i] = INT_MAX;
    }
    dp[0] = 0;
    for(int i = 0 ; i < orders ; i++){
        long long price,sum = 0;
        cin>>price;
        for(int j = 0 ; j < num ; j++){
            long long a;
            cin>>a;
            sum += a*denomination[j];
        }
        long long change = sum-price;
        cout << minCoins(change) << "\n";
    }
	return 0;
}
Editor is loading...