結果
| 問題 |
No.527 ナップサック容量問題
|
| コンテスト | |
| ユーザー |
inr_yorimichi
|
| 提出日時 | 2017-12-10 00:26:52 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 932 bytes |
| コンパイル時間 | 428 ms |
| コンパイル使用メモリ | 55,792 KB |
| 実行使用メモリ | 43,060 KB |
| 最終ジャッジ日時 | 2024-11-30 05:56:14 |
| 合計ジャッジ時間 | 2,557 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 13 WA * 23 RE * 1 |
ソースコード
#include<iostream>
using namespace std;
int g[101][100001];
int main(){
int N;
int v[100];
int w[100];
int V1=0;
int V2=0;
int W1=0;
int W2=100000;
int i,j;
int k=0;
int l=0;
for(i=0;i<101;i++){
for(j=0;j<100001;j++){
g[i][j]=0;
}
}
cin>>N;
for(i=0;i<N;i++){
cin>>v[i]>>w[i];
W1=W1+w[i];
V2=V2+v[i];
if(W2>w[i]){
W2=w[i];
l=i;
}
}
cin>>V1;
if(V1>=V2)cout<<W1<<endl<<"inf";
if(V1<=v[l]){
cout<<1<<endl<<w[l]-1;
}
if(V1<V2 && V1>v[l]){
for(i=0;i<W1+1;i++){
g[0][i]=0;
}
for(j=0;j<N+1;j++){
for(i=0;i<W1+1;i++){
g[j+1][i]=g[j][i];
}
for(i=0;i<W1+1;i++){
if(i==0 || g[j][i]!=0 ){
if(g[j+1][i+w[j]]<g[j][i]+v[j] && i+w[j]<=W1){
g[j+1][i+w[j]]=g[j][i]+v[j];
}
}
}
}
for(i=1;i<W1+1;i++){
if(g[N][i]==V1){
if(k==0){
cout<<i<<endl;
k=1;
}
}else{
if(k!=0 && g[N][i]!=0){
cout<<i-1;
break;
}
}
}
}
return 0;
}
inr_yorimichi