結果
問題 | No.54 Happy Hallowe'en |
ユーザー |
![]() |
提出日時 | 2014-10-31 01:50:04 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 225 ms / 5,000 ms |
コード長 | 1,057 bytes |
コンパイル時間 | 798 ms |
コンパイル使用メモリ | 81,368 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-15 17:09:56 |
合計ジャッジ時間 | 2,899 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 19 |
ソースコード
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <tuple> #include <vector> using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<vi> vvi; #define loop(i,a,b) for(ll i=(a);i<ll(b);i++) #define rep(i,b) loop(i,0,b) // housou de kotae wo kikimashita int main(){ int N; while(cin>>N){ vector<tuple<int,int,int>> v(N); rep(i,N){ int x,y,z; cin>>x>>y; z=x+y; v[i]=tie(z,x,y); } sort(v.begin(),v.end()); vi cur(30000); cur[0]=1; rep(i,N){ vi next(30000); int V,T; tie(ignore,V,T)=v[i]; for(int j=0;j<=20000;j++){ next[j]|=cur[j]; if(cur[j] && j<T){ next[j+V]|=cur[j]; } } // for(int j=0;j<20;j++){ // cout<<next[j]<<" "; // } // cout<<endl; swap(cur,next); } int ans=0; rep(i,cur.size())if(cur[i])ans=i; cout<<ans<<endl; } }