Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- using namespace std;
- int main() {
- long long a,b;
- cin>>a>>b;
- long long x[a];
- long long y[a];
- long long z[a];
- long long q[a][25];
- long long k[a];
- long long cost[a][25]={0};
- for(int i=0;i<a;i++){
- k[i] = 1e6;
- cin>>x[i]>>y[i]>>z[i];
- q[i][0]= x[i] * y[i] * z[i];
- k[i] = min(x[i],y[i]);
- k[i] = min(k[i],z[i]);
- for(int j=1;j<k[i];j++){
- x[i]-=j;
- y[i]-=j;
- z[i]-=j;
- q[i][j] = x[i] * y[i] * z[i];
- }
- }
- long long dp[a+1][b+1]={0};
- for(int i=0;i<=a;i++){
- for(int j=0;j<=b;j++){
- for(int s=0;s<=k[i];s++){
- cost[i][s] = dp[i][j];
- if(i == 0 && j == 0){
- dp[i][j] = 1;
- }
- else if(i == 0 || j == 0){
- dp[i][j] = 0;
- }
- else if(j >= q[i][s]){
- min(dp[i-1][j],dp[i-1][j-q[i][s]]+cost[i][s]);
- }
- else{
- dp[i][j] = dp[i-1][j];
- }
- }
- }
- }
- if(dp[a][b] != 0){
- cout<<dp[a][b];
- }
- else{
- cout<<-1;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement