Submission #362496

#TimeUsernameProblemLanguageResultExecution timeMemory
362496codebuster_10Bank (IZhO14_bank)C++17
100 / 100
168 ms8684 KiB
#include <bits/stdc++.h> using namespace std ; #define i64 int64_t // typecast using i64(x) #define int int64_t #define ld long double #define f(i,a,b) for(int i=a; i<b; ++i) #define endl '\n' #define PQ priority_queue #define LB lower_bound #define UB upper_bound #define fr first #define sc second #define all(a) (a).begin(),(a).end() #define allr(a) (a).rbegin(),(a).rend() #define sz(x) ((int)(x).size()) //#ifndef ONLINE_JUDGE template<typename T> void __p(T a) { cout<<a; } template<typename T, typename F> void __p(pair<T, F> a) { cout<<"{"; __p(a.first); cout<<","; __p(a.second); cout<<"}\n"; } template<typename T> void __p(std::vector<T> a) { cout<<"{"; for(auto it=a.begin(); it<a.end(); it++) __p(*it),cout<<",}\n"[it+1==a.end()]; } template<typename T, typename ...Arg> void __p(T a1, Arg ...a) { __p(a1); __p(a...); } template<typename Arg1> void __f(const char *name, Arg1 &&arg1) { cout<<name<<" : "; __p(arg1); cout<<endl; } template<typename Arg1, typename ... Args> void __f(const char *names, Arg1 &&arg1, Args &&... args) { int bracket=0,i=0; for(;; i++) if(names[i]==','&&bracket==0) break; else if(names[i]=='(') bracket++; else if(names[i]==')') bracket--; const char *comma=names+i; cout.write(names,comma-names)<<" : "; __p(arg1); cout<<" | "; __f(comma+1,args...); } //#endif void setIO(string s = "") { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin.exceptions(cin.failbit); if(sz(s)){ freopen((s+".in").c_str(),"r",stdin); freopen((s+".out").c_str(),"w",stdout); } } signed main(){ setIO() ; int N , M ; cin >> N >> M ; vector<int> a(N+2,0), b(M) ; f(i,1,N+1) cin >> a[i] , a[i] += a[i-1] ; f(i,0,M) cin >> b[i] ; vector<int> dp(1<<M,0) ; for(int mask = 1 ; mask < (1<<M) ; mask++){ int sum = 0 ; f(i,0,M) if(mask & (1<<i)) sum += b[i] ; f(i,0,M) if(mask & (1<<i)) if( a[dp[mask^(1<<i)] + 1] == sum) dp[mask] = max(dp[mask], dp[mask^(1<<i)] + 1) ; else dp[mask] = max(dp[mask], dp[mask^(1<<i)]) ; } cout << (*max_element(all(dp)) == N ? "YES" : "NO") ; }

Compilation message (stderr)

bank.cpp: In function 'int main()':
bank.cpp:92:9: warning: suggest explicit braces to avoid ambiguous 'else' [-Wdangling-else]
   92 |       if(mask & (1<<i))
      |         ^
bank.cpp: In function 'void setIO(std::string)':
bank.cpp:73:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   73 |     freopen((s+".in").c_str(),"r",stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bank.cpp:74:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   74 |     freopen((s+".out").c_str(),"w",stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...