Untitled
unknown
plain_text
4 years ago
1.2 kB
13
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...