Submission #1278371

#TimeUsernameProblemLanguageResultExecution timeMemory
1278371CAZRALOBank (IZhO14_bank)C++20
100 / 100
83 ms8652 KiB
#include<bits/stdc++.h> using namespace std; template<typename... T> void see(T&... args) { ((cin>>args),...); } template<typename... T> void put(T&&... args) { ((cout<<args<<' '),...); } template<typename... T> void putl(T&&... args) { ((cout<<args<<' '),...); cout<<'\n'; } #define ull unsigned long long #define ll long long #define MASK(x) (1ll<<(x)) #define BIT(x,i) (x>>i&1) #define ins insert #define pb push_back #define eb emplace_back #define bg(a) a.begin() #define sz(a) (int)a.size() #define PB pop_back(); #define PF pop_front(); #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() #define fu(i,a,b) for (int i=(a); i<=(b); ++i) #define f0u(i,a,b) for (int i=(a); i<(b); ++i) #define fd(i,a,b) for (int i=(a); i>=(b); --i) #define f0d(i,a,b) for (int i=(a)-1; i>=(b); --i) #define str string #define trav(x,a) for (auto &x : a) #define pii pair<int,int> #define tiii tuple<int,int,int> #define vi vector<int> #define vpi vector<pii> #define ii pair<int,int> #define fi first #define se second #define lb lower_bound #define ub upper_bound template<class T > int lwb(vector<T> &a, const T &b) { return (int)(lb(all(a), b) - bg(a)); } template<class T > int upb(vector<T> &a, const T &b) { return (int)(ub(all(a), b) - bg(a)); } const int inf = 1e9; const long long MOD = 1000000007; const signed MAXN = 2e5+5; const signed LOG = 19; template<class T>inline T gcd(T a,T b) { while (b) swap(b, a%=b); return a; } template<class T>inline T lcm(T a,T b) { return a / gcd(a, b) * b; } template<class T1, class T2> bool ckmax(T1 &a, const T2 b) { return a < b ? a = b, 1 : 0; } template<class T1, class T2> bool ckmin(T1 &a, const T2 b) { return a > b ? a = b, 1 : 0; } int a[20],b[20]; int n,m; void subtask1() { for (int mask = 0; mask < (1<<m); mask++) { int sum = 0; f0u(i,0,m) if (BIT(mask,i)) sum+=b[i]; if (sum==a[0]) { putl("YES"); return; } } put("NO"); } void solve(){ see(n,m); fu(i,0,n-1) see(a[i]); fu(i,0,m-1) see(b[i]); if (n==1) { subtask1(); return; } vi leftover(MASK(m),-1),cover(MASK(m),-1); cover[0] = leftover[0] = 0; for (int mask = 0; mask < (1<<m); mask++) { int sum = 0; f0u(i,0,m) if (BIT(mask,i)) { sum+=b[i]; int newmask = mask^MASK(i); if (leftover[newmask] + b[i] == a[cover[newmask]]) { cover[mask] = cover[newmask] + 1; leftover[mask] = 0; } else if (cover[newmask]>cover[mask]) { cover[mask] = cover[newmask]; leftover[mask] = leftover[newmask] + b[i]; } } if (cover[mask] == n) { putl("YES"); return; } } putl("NO"); } #define FNAME "" signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int t = 1; if (fopen(FNAME".inp","r")) { freopen(FNAME".inp","r",stdin); freopen(FNAME".out","w",stdout); } //see(t); while (t--) solve(); return 0; }

Compilation message (stderr)

bank.cpp: In function 'int main()':
bank.cpp:102:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  102 |         freopen(FNAME".inp","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
bank.cpp:103:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  103 |         freopen(FNAME".out","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...