結果
問題 |
No.2686 商品券の使い道
|
ユーザー |
![]() |
提出日時 | 2024-03-01 08:12:13 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 922 bytes |
コンパイル時間 | 2,957 ms |
コンパイル使用メモリ | 251,108 KB |
実行使用メモリ | 13,640 KB |
最終ジャッジ日時 | 2024-09-30 05:08:12 |
合計ジャッジ時間 | 25,914 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 28 TLE * 1 -- * 19 |
ソースコード
#include <bits/stdc++.h> using namespace std; #pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") using ll = long long; const ll INF = 1e18; //O(3^n) int main(){ ll n,m,q; cin >> n >> m >> q; vector<ll> a(n),b(n); for(ll i = 0;i < n;i++){ cin >> a[i] >> b[i]; } ll msum = 0,qsum = 0,val = 0,ans = 0; auto rec = [&](auto &rec,ll i) -> void { if(i==n){ ans = max(ans,val); return; } rec(rec,i+1); if(msum+a[i] <= m){ msum += a[i]; val += b[i]; rec(rec,i+1); msum -= a[i]; val -= b[i]; } if(qsum+a[i] <= q){ qsum += a[i]; val += b[i]; rec(rec,i+1); qsum -= a[i]; val -= b[i]; } return; }; rec(rec,0); cout << ans << endl; }