Submission #1262611

#TimeUsernameProblemLanguageResultExecution timeMemory
1262611bluevioletBank (IZhO14_bank)C++20
71 / 100
1096 ms13120 KiB
#include <bits/stdc++.h> #define ll long long #define io(x) if (fopen(x".inp","r")) {freopen(x".inp","r",stdin),freopen(x".out","w",stdout);} #define TimeRun {End=clock();cerr<<"Time run: "<<(float)(End-Begin)/CLOCKS_PER_SEC<<"s"<<el;} #define mem(c, x) memset(c, x, sizeof(c)) #define all(c) c.begin(), c.end() #define bit(i,j) ((i >> j) & 1) #define se second #define fi first #define el '\n' using namespace std; template<class X, class Y> bool maximize(X &a, const Y &b) { return (a < b ? a = b, 1 : 0); } template<class X, class Y> bool minimize(X &a, const Y &b) { return (a > b ? a = b, 1 : 0); } int dx[8] = {0, 1, 0,-1, 1, 1,-1,-1}; int dy[8] = {1, 0,-1, 0, 1,-1,-1, 1}; const int maxn = 22; const int Inf = 2e9 + 7; const ll Infll = 1e18 + 9; const ll Mod = 1e9 + 7; /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ int n, m, a[maxn], b[maxn]; ll pref[maxn], sum[1 << maxn]; vector<int> subOf[maxn]; bool dp[maxn][1 << maxn]; void solve() { cin >> n >> m; for (int i=1; i<=n; i++) cin >> a[i], pref[i] = pref[i-1] + a[i]; for (int i=1; i<=m; i++) cin >> b[i]; subOf[0].push_back(0); for (int mask=1; mask<(1 << m); mask++) { sum[mask] = sum[mask-(mask&-mask)] + b[__lg(mask&-mask) + 1]; } for (int i=1; i<=n; i++) { for (int mask=1; mask<(1 << m); mask++) { if (sum[mask] == pref[i]) { subOf[i].push_back(mask); } } } dp[0][0] = true; for (int i=1; i<=n; i++) { for (int mask : subOf[i-1]) { if (!dp[i-1][mask]) continue; int left = ((1<<m)-1) ^ mask; for (int sub=left; sub; sub = (sub - 1)&left) { if (sum[sub] == a[i]) { dp[i][mask^sub] = 1; if (i == n) return void(cout << "YES"); } } } } cout << "NO"; } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); clock_t Begin = clock(), End; io("task"); solve(); TimeRun; return (0 ^ 0); }

Compilation message (stderr)

bank.cpp: In function 'int main()':
bank.cpp:4:58: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    4 | #define          io(x)   if (fopen(x".inp","r")) {freopen(x".inp","r",stdin),freopen(x".out","w",stdout);}
      |                                                   ~~~~~~~^~~~~~~~~~~~~~~~~~~
bank.cpp:65:5: note: in expansion of macro 'io'
   65 |     io("task");
      |     ^~
bank.cpp:4:85: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    4 | #define          io(x)   if (fopen(x".inp","r")) {freopen(x".inp","r",stdin),freopen(x".out","w",stdout);}
      |                                                                              ~~~~~~~^~~~~~~~~~~~~~~~~~~~
bank.cpp:65:5: note: in expansion of macro 'io'
   65 |     io("task");
      |     ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...