結果
問題 | No.1701 half price |
ユーザー |
![]() |
提出日時 | 2021-10-15 20:28:42 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 5 ms / 3,000 ms |
コード長 | 873 bytes |
コンパイル時間 | 3,735 ms |
コンパイル使用メモリ | 229,332 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-17 16:50:08 |
合計ジャッジ時間 | 4,530 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 20 |
ソースコード
#include <bits/stdc++.h>using namespace std;#include <atcoder/all>using namespace atcoder;using ll=long long;using Graph=vector<vector<int>>;#define INF 1000000000#define MOD 998244353#define MAX 200000int main(){int N;ll W;cin>>N>>W;vector<ll> a(N);for(int i=0;i<N;i++){cin>>a[i];}vector<ll> full_price(1<<N,0);vector<ll> half_price(1<<N,0);for(int bit=1;bit<(1<<N);bit++){ll sum=0;for(int i=0;i<N;i++){if(((bit>>i)&1)==1){sum+=a[i];}}full_price[bit]=sum;half_price[bit]=sum/2;}int ans=0;//cout<<W<<endl;for(int bit=1;bit<(1<<N);bit++){bool flag=false;for(int s=bit;;s=((s-1)&bit)){if(half_price[s]+full_price[s^bit]==W){flag=true;}if(s==0){break;}}if(flag){ans++;}}cout<<ans<<'\n';}