Submission #683172

# Submission time Handle Problem Language Result Execution time Memory
683172 2023-01-17T21:46:26 Z theartofwar Bank (IZhO14_bank) C++14
52 / 100
1000 ms 193244 KB
#pragma GCC optimize("Ofast")
#pragma GCC optimization ("unroll-loops")
#include <bits/stdc++.h>
#define rsrt(v) sort(v.begin(), v.end(), greater<int>())
#define srt(v) sort(v.begin(),v.end())
#define all(x) (x).begin(),(x).end()
#define ll long long
#define int long long
ll md = 1000000007;
int inf = 1e18;
using namespace std;
template <typename T>
T pw(T a, T b) {T c = 1, m = a;while(b) {if (b & 1) c=(c*m); m=(m*m); b/=2;} return c;}
template <typename T>
T ceel(T a, T b){if (a%b==0) return a/b; else return a/b + 1;}
template <typename T>
T gcd(T a, T b) {return b == 0 ? a : gcd(b, a % b);}
ll pwmd(ll a, ll b) {ll c = 1, m = a%md;while(b) {if (b & 1) c=(c*m)%md; m=(m*m)%md; b/=2;} return c;}
ll modinv(ll n){return pwmd(n, md - 2);}
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
ll random(ll l, ll r){ // gives random number in [l,r]
  return uniform_int_distribution<ll>(l, r)(rng);
}
template <class T1, class T2>
ostream &operator<<(ostream &os, const pair<T1, T2> &p) {
  return os << '{' << p.first << ", " << p.second << '}';
}
template <class T, class = decay_t<decltype(*begin(declval<T>()))>,
          class = enable_if_t<!is_same<T, string>::value>>
ostream &operator<<(ostream &os, const T &c) {
  os << '[';
  for (auto it = c.begin(); it != c.end(); ++it)
    os << &", "[2 * (it == c.begin())] << *it;
  return os << ']';
}
//support up to 5 args
#define _NTH_ARG(_1, _2, _3, _4, _5, _6, N, ...) N
#define _FE_0(_CALL, ...)
#define _FE_1(_CALL, x) _CALL(x)
#define _FE_2(_CALL, x, ...) _CALL(x) _FE_1(_CALL, __VA_ARGS__)
#define _FE_3(_CALL, x, ...) _CALL(x) _FE_2(_CALL, __VA_ARGS__)
#define _FE_4(_CALL, x, ...) _CALL(x) _FE_3(_CALL, __VA_ARGS__)
#define _FE_5(_CALL, x, ...) _CALL(x) _FE_4(_CALL, __VA_ARGS__)
#define FOR_EACH_MACRO(MACRO, ...)                                             \
  _NTH_ARG(dummy, ##__VA_ARGS__, _FE_5, _FE_4, _FE_3, _FE_2, _FE_1, _FE_0)     \
  (MACRO, ##__VA_ARGS__)
// #ifdef LOCAL
#define out(x) #x " = " << x << "; "
#define dbg(...)                                                              \
  cerr << "Line " << __LINE__ << ": " FOR_EACH_MACRO(out, __VA_ARGS__) << "\n"
// #else
// #define debug(...) 42
// #endif
//--------------------------------theartofwar-------------------------------------------//
signed main()
{
    ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	int n, m; cin >> n >> m;
	vector<int> a(n), b(m);
	for (int i = 0; i < n; i++) cin >> a[i];
	for (int j = 0; j < m; j++) cin >> b[j];
	unordered_map<int, vector<int>> mp;
	for (int i = 0; i < (1 << m); i++) {
		int sum = 0;
		for (int j = 0; j < m; j++) {
			if (i & (1 << j)) sum += b[j];
		}
		mp[sum].push_back(i);
	}
	vector<vector<int>> dp(21, vector<int>(1 << m));
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < (1 << m); j++) {
			if (i && !dp[i - 1][j]) continue;
			for (auto e : mp[a[i]]) {
				if (e & j) continue;
				dp[i][e | j] = 1;
			}
		}
	}
	if (dp[n - 1][(1 << m) - 1]) cout << "YES";
	else cout << "NO";
}

Compilation message

bank.cpp:2: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    2 | #pragma GCC optimization ("unroll-loops")
      |
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 468 KB Output is correct
4 Correct 11 ms 6484 KB Output is correct
5 Correct 168 ms 193244 KB Output is correct
6 Correct 2 ms 468 KB Output is correct
7 Correct 1 ms 596 KB Output is correct
8 Execution timed out 1095 ms 191844 KB Time limit exceeded
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 468 KB Output is correct
2 Correct 1 ms 468 KB Output is correct
3 Correct 1 ms 468 KB Output is correct
4 Correct 1 ms 452 KB Output is correct
5 Correct 1 ms 468 KB Output is correct
6 Correct 1 ms 468 KB Output is correct
7 Correct 1 ms 468 KB Output is correct
8 Correct 1 ms 468 KB Output is correct
9 Correct 1 ms 468 KB Output is correct
10 Correct 1 ms 452 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 3540 KB Output is correct
2 Correct 5 ms 3540 KB Output is correct
3 Correct 5 ms 3776 KB Output is correct
4 Correct 4 ms 3396 KB Output is correct
5 Correct 4 ms 3412 KB Output is correct
6 Correct 4 ms 3668 KB Output is correct
7 Correct 4 ms 3524 KB Output is correct
8 Correct 4 ms 3520 KB Output is correct
9 Correct 4 ms 3668 KB Output is correct
10 Correct 4 ms 3648 KB Output is correct
11 Correct 3 ms 3412 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 468 KB Output is correct
4 Correct 11 ms 6484 KB Output is correct
5 Correct 168 ms 193244 KB Output is correct
6 Correct 2 ms 468 KB Output is correct
7 Correct 1 ms 596 KB Output is correct
8 Execution timed out 1095 ms 191844 KB Time limit exceeded
9 Halted 0 ms 0 KB -