Submission #1595589


Source Code Expand

#include <iostream>
using namespace std;
const int INF = 10000000;

int main(){
	int N,Ma,Mb;
	int a[41],b[41],c[41];
	int dp[41][411][411];
	
	for(int i=0;i<41;i++){
		for(int j=0;j<411;j++){
			for(int k=0;k<411;k++){
				dp[i][j][k] = INF;
			}
		}
	}
	dp[0][0][0] = 0;
	
	cin >> N >> Ma >> Mb;
	for(int i=0;i<N;i++){
		cin >> a[i] >> b[i] >> c[i];
	}
	
	for(int i=0;i<N;i++){
		for(int ca=0;ca<=410;ca++){
			for(int cb=0;cb<=410;cb++){
				if(dp[i][ca][cb]==INF)continue;//まだ更新されていない
				dp[i+1][ca][cb] = min(dp[i+1][ca][cb],dp[i][ca][cb]);//i番目の薬品を買わない場合。
				//次の場所(i+1)に、次の場所で必要な金と今の場所で必要な金の最小値を入れる。
				
				dp[i+1][ca+a[i]][cb+b[i]] = min(dp[i+1][ca+a[i]][cb+b[i]],dp[i][ca][cb]+c[i]);//i番目の薬品を買う場合
				//i番目を買うと、Maにa[i]追加 Mbにb[i]追加  今の場所で必要な金と薬品iの値段(c[i]) との最小値
			}
		}
	}
	
	int answer = INF;
	for(int ca=1;ca<=410;ca++){//比が0対
		for(int cb=1;cb<=410;cb++){//0だとif文が通ってしまう。
			if(ca*Mb == cb*Ma){
				answer = min(answer,dp[N][ca][cb]);//dp後はdp[N](dp[i+1]の終着点)を参照すれば良い
			}
		}
	}
	
	if(answer == INF){//目的の比率にならなかった
		answer = -1;
	}
	cout << answer << endl;
	return 0;
}

Submission Info

Submission Time
Task D - Mixing Experiment
User mashi6n
Language C++14 (GCC 5.4.1)
Score 400
Code Size 1426 Byte
Status AC
Exec Time 16 ms
Memory 27900 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 2
AC × 20
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
All sample_01.txt, sample_02.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt
Case Name Status Exec Time Memory
sample_01.txt AC 14 ms 27900 KB
sample_02.txt AC 10 ms 27264 KB
subtask_1_01.txt AC 11 ms 27264 KB
subtask_1_02.txt AC 10 ms 27264 KB
subtask_1_03.txt AC 11 ms 27264 KB
subtask_1_04.txt AC 11 ms 27264 KB
subtask_1_05.txt AC 12 ms 27264 KB
subtask_1_06.txt AC 12 ms 27264 KB
subtask_1_07.txt AC 12 ms 27264 KB
subtask_1_08.txt AC 13 ms 27264 KB
subtask_1_09.txt AC 14 ms 27264 KB
subtask_1_10.txt AC 15 ms 27264 KB
subtask_1_11.txt AC 16 ms 27264 KB
subtask_1_12.txt AC 16 ms 27264 KB
subtask_1_13.txt AC 16 ms 27264 KB
subtask_1_14.txt AC 16 ms 27264 KB
subtask_1_15.txt AC 16 ms 27264 KB
subtask_1_16.txt AC 16 ms 27264 KB
subtask_1_17.txt AC 16 ms 27264 KB
subtask_1_18.txt AC 16 ms 27264 KB