結果
| 問題 |
No.527 ナップサック容量問題
|
| コンテスト | |
| ユーザー |
nanophoto12
|
| 提出日時 | 2017-08-17 18:33:13 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 12 ms / 2,000 ms |
| コード長 | 1,246 bytes |
| コンパイル時間 | 772 ms |
| コンパイル使用メモリ | 94,356 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-10-14 13:54:27 |
| 合計ジャッジ時間 | 2,258 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 37 |
ソースコード
#include <cmath>
#include <vector>
#include <list>
#include <map>
#include <set>
#include <functional>
#include <queue>
#include <iostream>
#include <string.h>
#include <iomanip>
#include <algorithm>
#include <functional>
#include <cstdint>
#include <climits>
#include <unordered_set>
#include <sstream>
#include <stack>
using namespace std;
typedef long long int ll;
typedef pair<int,int> pii;
typedef tuple<int,int,int> t3;
int dp[100010];
int main()
{
int n;
cin >> n;
vector<pii> vs(n);
for(int i = 0;i < n;i++)
{
int v,w;
cin >> v >>w;
vs[i] = make_pair(v,w);
}
int maxv;
cin >> maxv;
for(int i = 0;i < n;i++)
{
auto v = vs[i].first;
auto w = vs[i].second;
for(int j = 100010-1;j - w>= 0;j--)
{
auto k = j - w;
dp[j] = max(dp[j], dp[k] + v);
}
}
ll mn=100001,mx=0;
for(int i = 0;i <= 100001;i++)
{
if(dp[i]==maxv){
mn=min(mn,(ll)i);
mx=max(mx,(ll)i);
}
}
if(mx==100001)
{
cout<<max(mn,(ll)1)<<endl;
cout<<"inf\n";
}
else{
cout<<max(mn,(ll)1)<<endl;
cout<<mx<<endl;
}
return 0;
}
nanophoto12