Submission #884539

#TimeUsernameProblemLanguageResultExecution timeMemory
884539WhiteBank (IZhO14_bank)C++14
71 / 100
1094 ms8792 KiB
#pragma GCC optimize ("O3")
#include <bits/stdc++.h>
#define endl "\n"
using namespace std;

int  n,m,ch[22],cash[22];
bool ans=false;
vector<int > hi;
vector<int > num[40004];

void create(int  bitsm,int  vr,int  ob){
    //cout<<vr<<"ob"<<bitsm<<endl;
    if(vr==m){
        num[ob].push_back(bitsm);
        return;
    }
    create(bitsm,vr+1,ob);
    bitsm =  bitsm + (1 << vr);
    create(bitsm,vr+1,ob+cash[vr]);
}

void solve(int  bitsm,int  vr){
    if(vr==n)ans=true;
    if(ans==true)return ;
    for(int j=0;j<num[ch[vr]].size() && ans==false;j++){
        bool krai=false;
        int s1=bitsm,s2=num[ch[vr]][j];
        while(s1>0 || s2>0){
            if(s1%2==1 && s2%2==1){
                krai=true;
            }
            s1/=2;
            s2/=2;
        }
        if(krai==false){
            int nov = bitsm + num[ch[vr]][j];
            //cout<<bitsm<<" "<<num[ch[vr]][j]<<"ddd"<<endl;
            solve(nov, vr+1);
        }
    }

}

int main(){

    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    cin>>n>>m;
    for(int i=0;i<n;i++)cin>>ch[i];
    for(int i=0;i<m;i++)cin>>cash[i];

    create(0,0,0);
    solve(0,0);

    if(ans==false)cout<<"NO"<<endl;
    else cout<<"YES"<<endl;

    return 0;
}

Compilation message (stderr)

bank.cpp: In function 'void solve(int, int)':
bank.cpp:25:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   25 |     for(int j=0;j<num[ch[vr]].size() && ans==false;j++){
      |                 ~^~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...