# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1248194 | tridang7272 | 은행 (IZhO14_bank) | C++20 | 2 ms | 840 KiB |
#include <bits/stdc++.h>
#define nmax (long long)(1e3+7)
#define oo (long long)(1e9)
#define ll long long
#define ld long double
#define pii pair<int,int>
#define pll pair<ll,ll>
#define fi first
#define se second
#define pb push_back
#define bignum string
#define mahiru "traluong"
#define shiina_mahiru ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
ll n,m;
vector<ll> a,b;
vector<ll> dp;
vector<vector<ll>> S;
int main()
{
shiina_mahiru
if(fopen(mahiru".inp","r"))
{
freopen(mahiru".inp","r",stdin);
freopen(mahiru".out","w",stdout);
}
ll sum=0;
cin>>n>>m;
a.resize(n);
b.resize(m);
for(int i=0;i<n;i++){
cin>>a[i];sum+=a[i];
}
for(int i=0;i<m;i++)
cin>>b[i];
S.assign(sum+10,{});
ll MX=(1<<m);
for(int mask=0;mask<MX;mask++)
{
ll total=0;
for(int i=0;i<m;i++)
if((mask>>i)&1) total+=b[i];
S[total].pb(mask);
}
vector<ll> dp(MX,-1);
dp[0]=0;
for(int mask=0;mask<MX;mask++)
{
if(dp[mask]<0) continue;
ll total=0;
for(int i=0;i<m;i++)
if((mask>>i)&1) total+=b[i];
int id=dp[mask];
if(id==n) continue;
for(int emask:S[a[id]])
{
if((emask&mask)>0) continue;
ll nmask=emask|mask;
dp[nmask]=max(dp[nmask],dp[mask]+1);
}
}
bool ok=false;
for(int mask=0;mask<MX;mask++)
if(dp[mask]==n) {ok=true;break;}
cout<<(ok?"YES":"NO");
return 0;
}
//CODE CUA DANGRANGCOM
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |