제출 #850638

#제출 시각아이디문제언어결과실행 시간메모리
850638askow은행 (IZhO14_bank)C++14
71 / 100
1030 ms41284 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    //!!! dp[i][mask] da li je moguce u prvih i napraviti tako da iskoristim tacno mask bitove
    int n,m;
    cin>>n>>m;
    int a[n];
    for(int i=0;i<n;i++)cin>>a[i];
    int b[m];
    for(int i=0;i<m;i++)cin>>b[i];
    int dp[n+1][(1LL<<m)];
    for(int i=0;i<=n;i++)for(int j=0;j<(1LL<<m);j++)dp[i][j]=0;
    for(int i=0;i<(1LL<<m);i++){
        int R=0;
        for(int j=0;j<m;j++){
            if(i&(1LL<<j))R+=b[j];
        }
        if(R==a[0])dp[0][i]=1;
    }
    /*
    int ans=0;
    for(int i=0;i<(1LL<<m);i++)ans|=(dp[0][i]);
    if(ans)cout<<"YES";
    else cout<<"NO";*/
    int pref[(1LL<<m)];
    for(int i=0;i<(1LL<<m);i++)pref[i]=0;
    for(int i=0;i<(1LL<<m);i++){
        int R=0;
        for(int j=0;j<m;j++){
            if(i&(1LL<<j))R+=b[j];
        }
        pref[i]=R;
    }
    for(int i=1;i<n;i++){
        //!!! dp[i][mask]|=dp[i-1][drugamaska];
        //!!! i&j==0 nemaju zajednicki bit
        int R=0;
        for(int j=0;j<(1LL<<m);j++){
            // za iti broj ces uzeti ovu masku
            if(pref[j]==a[i]){
                //!!! ovu masku koristim da bi dobio a[i]
                //!!! sada me zanima dal mogu da od neke druge maske koja nema nijedan bit isti da dobijem sve i-1 brojeve
                for(int mask=0;mask<(1LL<<m);mask++){
                    if(mask&j)continue;
                    dp[i][mask|j]|=(dp[i-1][mask]);
                }
            }
        }
    }
    int ans=0;
    for(int i=0;i<(1LL<<m);i++)ans|=dp[n-1][i];
    if(ans)cout<<"YES";
    else cout<<"NO";
}

컴파일 시 표준 에러 (stderr) 메시지

bank.cpp: In function 'int main()':
bank.cpp:40:13: warning: unused variable 'R' [-Wunused-variable]
   40 |         int R=0;
      |             ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...