Untitled
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...