Submission #393329

#TimeUsernameProblemLanguageResultExecution timeMemory
393329asbsfdsBank (IZhO14_bank)C++14
100 / 100
642 ms62020 KiB
#include <bits/stdc++.h> #define X first #define Y second using namespace std; typedef long long llint; const int maxn = 30; const int base = 31337; const int mod = 1e9+7; const int inf = 0x3f3f3f3f; const int logo = 20; const int off = 1 << logo; const int treesiz = off << 1; int n, m; int a[maxn], b[maxn]; bool dp[maxn][treesiz]; vector< int > v[maxn]; bool solve(int x, int mask) { if (x == n) return true; if (dp[x][mask]) return false; dp[x][mask] = true; bool out = false; for (int i = 0; i < v[x].size(); i++) { int tmask = v[x][i]; if ((mask & tmask) == 0) { int nmask = mask | tmask; out |= solve(x + 1, nmask); } } return out; } int main() { scanf("%d%d", &n, &m); for (int i = 0; i < n; i++) scanf("%d", a+i); for (int i = 0; i < m; i++) scanf("%d", b+i); int lim = (1 << m); for (int mask = 0; mask < lim; mask++) { int sum = 0; for (int i = 0; i < m; i++) { if (mask & (1 << i)) sum += b[i]; } for (int i = 0; i < n; i++) { if (sum == a[i]) v[i].push_back(mask); } } memset(dp, false, sizeof dp); if (solve(0, 0)) printf("YES\n"); else printf("NO\n"); return 0; }

Compilation message (stderr)

bank.cpp: In function 'bool solve(int, int)':
bank.cpp:27:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   27 |  for (int i = 0; i < v[x].size(); i++) {
      |                  ~~^~~~~~~~~~~~~
bank.cpp: In function 'int main()':
bank.cpp:38:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   38 |  scanf("%d%d", &n, &m);
      |  ~~~~~^~~~~~~~~~~~~~~~
bank.cpp:40:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   40 |   scanf("%d", a+i);
      |   ~~~~~^~~~~~~~~~~
bank.cpp:43:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   43 |   scanf("%d", b+i);
      |   ~~~~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...