Submission #683172

#TimeUsernameProblemLanguageResultExecution timeMemory
683172theartofwarBank (IZhO14_bank)C++14
52 / 100
1095 ms193244 KiB
#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 (stderr)

bank.cpp:2: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    2 | #pragma GCC optimization ("unroll-loops")
      |
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...