結果
問題 | No.54 Happy Hallowe'en |
ユーザー |
![]() |
提出日時 | 2018-11-20 14:42:18 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 26 ms / 5,000 ms |
コード長 | 1,244 bytes |
コンパイル時間 | 2,243 ms |
コンパイル使用メモリ | 198,604 KB |
最終ジャッジ日時 | 2025-01-06 16:56:08 |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 19 |
ソースコード
#include <bits/stdc++.h>using namespace std;#define INF 100000000#define YJ 1145141919#define INF_INT_MAX 2147483647#define INF_LL 9223372036854775#define INF_LL_MAX 9223372036854775807#define EPS 1e-10#define MOD 1000000007#define MOD9 998244353#define Pi acos(-1)#define LL long long#define ULL unsigned long long#define LD long double#define int long long#define FOR(i,a,b) for(int i=(a);i<(b);++i)#define REP(i,n) FOR(i,0,n)#define ALL(a) begin((a)), end((a))#define RALL(a) (a).rbegin(), (a).rend()#define PB push_back#define MP make_pair#define SZ(a) int((a).size())const int MAX_N = 10005;int N;struct VTNode {int v, t;bool operator < (const VTNode& vt) const {return t+v < vt.t+vt.v;}}VT[MAX_N];bitset<MAX_N*2> dp[MAX_N];signed main(){cin >> N;REP(n,N) {cin >> VT[n].v >> VT[n].t;}sort(VT, VT+N);dp[0].set(0);REP(n,N) {//もらわない場合dp[n+1] |= dp[n];//貰う場合dp[n] <<= (MAX_N*2 - VT[n].t);dp[n] >>= (MAX_N*2 - VT[n].t);dp[n] <<= VT[n].v;dp[n+1] |= dp[n];// cerr << dp[n+1].to_string() << endl;}for(int n = 2*MAX_N-1; 0 <= n; n--) {if(dp[N][n] == 1) {cout << n << endl;return 0;}}cout << 0 << endl;return 0;}