結果

問題 No.527 ナップサック容量問題
ユーザー MNghrMNghr
提出日時 2017-06-09 23:48:43
言語 C++11
(gcc 11.4.0)
結果
TLE  
実行時間 -
コード長 873 bytes
コンパイル時間 474 ms
コンパイル使用メモリ 60,692 KB
実行使用メモリ 8,696 KB
最終ジャッジ日時 2023-10-24 03:09:52
合計ジャッジ時間 4,175 ms
ジャッジサーバーID
(参考情報)
judge12 / judge15
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
8,696 KB
testcase_01 AC 2 ms
4,348 KB
testcase_02 AC 5 ms
4,348 KB
testcase_03 AC 1 ms
4,348 KB
testcase_04 AC 2 ms
4,348 KB
testcase_05 TLE -
testcase_06 -- -
testcase_07 -- -
testcase_08 -- -
testcase_09 -- -
testcase_10 -- -
testcase_11 -- -
testcase_12 -- -
testcase_13 -- -
testcase_14 -- -
testcase_15 -- -
testcase_16 -- -
testcase_17 -- -
testcase_18 -- -
testcase_19 -- -
testcase_20 -- -
testcase_21 -- -
testcase_22 -- -
testcase_23 -- -
testcase_24 -- -
testcase_25 -- -
testcase_26 -- -
testcase_27 -- -
testcase_28 -- -
testcase_29 -- -
testcase_30 -- -
testcase_31 -- -
testcase_32 -- -
testcase_33 -- -
testcase_34 -- -
testcase_35 -- -
testcase_36 -- -
testcase_37 -- -
testcase_38 -- -
testcase_39 -- -
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
#include <utility>
#include <algorithm>
#include <vector>
using namespace std;
int N,v[100],w[100],V;

int rec(int i,int j){
	int res;
	if(i == N)
		res = 0;
	else if(j < w[i])
		res = rec(i+1,j);
	else
		res = max(rec(i+1,j),rec(i+1,j-w[i]) + v[i]);

	return res;
}

int main(){
	bool flag1= true,flag2=false,flag3=false,flag4 = true;
	int sum = 0;
	cin >> N;
	for(int i = 0;i < N;++i)
		cin >> v[i] >> w[i];
	cin >> V;

	for(int i = 0 ;i < N;++i){
		sum += v[i];
	}

	for(int i = 1; i < 100000;++i){
		if(rec(0,i) == V && flag1 == true){
			cout << i <<endl;
			flag1 = false;
			flag2 = true;
		}

		if(sum <= V && flag4 == true && flag2 == true){
			cout << "inf" <<endl;
			flag3 == true;
			flag4 = false;
		}
		else if(flag2 == true && rec(0,i+1) != V){
			cout << i << endl;
			break;
		}

		if(flag3 == true && flag2 == true)
			break;

	}



}
0