結果
問題 | No.527 ナップサック容量問題 |
ユーザー | 水無灯里 |
提出日時 | 2017-06-16 23:41:29 |
言語 | C++11 (gcc 11.4.0) |
結果 |
AC
|
実行時間 | 9 ms / 2,000 ms |
コード長 | 3,428 bytes |
コンパイル時間 | 638 ms |
コンパイル使用メモリ | 93,228 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2024-10-01 06:56:51 |
合計ジャッジ時間 | 1,706 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 3 ms
6,820 KB |
testcase_01 | AC | 3 ms
6,820 KB |
testcase_02 | AC | 2 ms
6,820 KB |
testcase_03 | AC | 2 ms
6,820 KB |
testcase_04 | AC | 2 ms
6,816 KB |
testcase_05 | AC | 4 ms
6,820 KB |
testcase_06 | AC | 8 ms
6,816 KB |
testcase_07 | AC | 6 ms
6,820 KB |
testcase_08 | AC | 4 ms
6,816 KB |
testcase_09 | AC | 2 ms
6,816 KB |
testcase_10 | AC | 9 ms
6,816 KB |
testcase_11 | AC | 6 ms
6,816 KB |
testcase_12 | AC | 5 ms
6,816 KB |
testcase_13 | AC | 8 ms
6,816 KB |
testcase_14 | AC | 4 ms
6,824 KB |
testcase_15 | AC | 6 ms
6,820 KB |
testcase_16 | AC | 2 ms
6,816 KB |
testcase_17 | AC | 4 ms
6,820 KB |
testcase_18 | AC | 5 ms
6,820 KB |
testcase_19 | AC | 2 ms
6,816 KB |
testcase_20 | AC | 4 ms
6,816 KB |
testcase_21 | AC | 9 ms
6,816 KB |
testcase_22 | AC | 6 ms
6,820 KB |
testcase_23 | AC | 8 ms
6,820 KB |
testcase_24 | AC | 3 ms
6,820 KB |
testcase_25 | AC | 6 ms
6,816 KB |
testcase_26 | AC | 6 ms
6,816 KB |
testcase_27 | AC | 5 ms
6,820 KB |
testcase_28 | AC | 5 ms
6,816 KB |
testcase_29 | AC | 9 ms
6,820 KB |
testcase_30 | AC | 3 ms
6,820 KB |
testcase_31 | AC | 4 ms
6,816 KB |
testcase_32 | AC | 6 ms
6,816 KB |
testcase_33 | AC | 5 ms
6,820 KB |
testcase_34 | AC | 6 ms
6,820 KB |
testcase_35 | AC | 5 ms
6,820 KB |
testcase_36 | AC | 2 ms
6,820 KB |
testcase_37 | AC | 4 ms
6,820 KB |
testcase_38 | AC | 6 ms
6,820 KB |
testcase_39 | AC | 5 ms
6,816 KB |
ソースコード
#define _USE_MATH_DEFINES #include <iostream> #include <iomanip> #include <cctype> #include <cstdlib> #include <algorithm> #include <functional> #include <vector> #include <cstdio> #include <cstring> #include <cmath> #include <cfloat> #include <map> #include <queue> #include <stack> #include <list> #include <string> #include <set> #include <complex> #include <utility> #include <numeric> #define rep(i,n) for(int i=0;i<(n);i++) #define REP(i,a,n) for(int i=a;i<(n);i++) #define rrep(i,n) for(int i=(n)-1;i>=0;i--) #define VI vector<int> #define VS vector<string> #define all(a) (a).begin(),(a).end() #define debug(x) cout<<#x<<": "<<x<<endl using namespace std; typedef long long int ll; typedef string::const_iterator State; typedef pair<int,int> P; class ParseError {}; const ll INF=1LL<<50; char fi[101][101]; int day[12]={31,28,31,30,31,30,31,31,30,31,30,31}; double EPS = 1e-14; const int MAX_V=100; const int MAX_N=100; char o[3]={'+','-','*'}; #define md 1000003 int bow[353][353]={0}; double add(double a,double b){ if(abs(a+b)<EPS*(abs(a)+abs(b))) return 0; return a+b; } /*struct P{ double x,y; P(){} P(double x,double y):x(x),y(y){ } P operator + (P p){ return P(add(x,p.x),add(y,p.y)); } P operator - (P p){ return P(add(x,-p.x),add(y,-p.y)); } P operator *(double d){ return P(x*d,y*d); } double dot(P p){ return add(x*p.x,y*p.y); } double det(P p){ return add(x*p.y,-y*p.x); } }; bool cmp_x(const P& p,const P& q){ if(p.x!=q.x) return p.x<q.x; return p.y<q.y; } vector<P> convex_hull(P* ps, int n){ sort(ps,ps+n,cmp_x); int k=0; vector<P> qs(n*2); rep(i,n){ while(k>1&&(qs[k-1]-qs[k-2]).det(ps[i]-qs[k-1])<=0) k--; qs[k++]=ps[i]; } for(int i=n-2,t=k;i>=0;i--){ while(k>t&&(qs[k-1]-qs[k-2]).det(ps[i]-qs[k-1])<=0) k--; qs[k++]=ps[i]; } qs.resize(k-1); return qs; } int n,m; vector<double> p; P ps[101]; */ //char c[520][520]; long long mod=1000000007; long long pow(ll i,ll j){ ll tmp=1; while(j){ if(j%2) tmp=tmp*i%mod; i=i*i%mod; j/=2; } return tmp; } int expression(State&); int term(State&); int factor(State&); int number(State&); int expression(State &begin){ int ret = term(begin); for(;;){ if(*begin == '+'){ begin++; ret += term(begin); } else if(*begin == '-'){ begin++; ret -= term(begin); } else break; } return ret; } int term(State &begin){ int ret = factor(begin); for(;;){ if(*begin=='*'){ begin++; ret *= factor(begin); } else if(*begin=='/'){ begin++; ret /= factor(begin); } else break; } return ret; } int factor(State &begin){ int ret; if(*begin == '('){ begin++; ret = expression(begin); begin++; } else ret = number(begin); return ret; } int number(State &begin){ int ret =0; while(isdigit(*begin)){ ret*=10; ret+=*begin - '0'; begin++; } return ret; } int main(void){ ll n; cin>>n; vector<pair<ll,ll>> d(n); ll V; for(int i=0;i<n;i++){ cin>>d[i].first>>d[i].second; } cin>>V; //sort(d.begin(),d.end()); vector<ll> w(100001,0); for(int i=0;i<d.size();i++){ for(int j=100000;j>=d[i].second;j--){ w[j]=max(w[j],w[j-d[i].second]+d[i].first); } } ll k=0; bool f=false; for(int i=1;i<100001;i++){ if(!f&&w[i]==V){ cout<<i<<endl; f=true; } if(f&&w[i]>V){ k=i-1; break; } } if(k==0) cout<<"inf"<<endl; else cout<<k<<endl; }