제출 #1278001

#제출 시각아이디문제언어결과실행 시간메모리
1278001manowo은행 (IZhO14_bank)C++20
19 / 100
12 ms580 KiB
#include <bits/stdc++.h> using namespace std; // ---- Pragmas for GCC ---- #pragma GCC optimize("Ofast") #pragma GCC optimize("unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") // ---- Macros ---- #define int long long #define pb push_back #define all(x)(x).begin(), (x).end() #define sz(x)((int)(x).size()) #define Airplane ios::sync_with_stdio(false);cin.tie(nullptr); const int INF = 1e18; const int MOD = 1e9 + 7; const int N = 1000; int f[N]; int dp[N], dp2[N]; /** int a[N] , t[4 * N] , b[N]; void build(int v , int tl , int tr) { if(tl == tr) { t[v] = a[tl]; return; } int mid = (tl + tr) / 2; build(v + v , tl , mid); build(v + v + 1, mid + 1, tr); t[v] = max(t[v + v] , t[v + v + 1]); } void upd(int v , int tl , int tr , int pos , int x) { if(tl == tr) { t[v] = x; return; } int mid = (tl + tr) / 2; if(pos <= mid) { upd(v + v , tl , mid , pos , x); } else { upd(v + v + 1 , mid + 1 , tr , pos , x); } t[v] = max(t[v + v] , t[v + v + 1]); } int get(int v , int tl , int tr , int k) { if(t[v] < k) { return 0; } if(tl == tr) { t[v] -= k; return tl; } int ans = 0; int mid = (tl + tr) / 2; if(t[v + v] >= k) { ans = get(v + v , tl , mid , k); } else { ans = get(v + v + 1 , mid + 1 , tr , k); } t[v] = max(t[v + v] , t[v + v + 1]); return ans; } **/ int binpow(int b, int e, int mod) { int res = 1; while (e > 0) { if (e % 2 == 1) { res = (res * b) % mod; } b = (b * b) % mod; e /= 2; } return res; } signed main() { Airplane int n, m; cin >> n >> m; vector < int > a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } vector < int > b(m); for (int i = 0; i < m; i++) { cin >> b[i]; } if (n == 1) { bool ok = false; int ans = a[0]; int x = 1 << m; for (int mask = 0; mask < x; mask++) { int sum = 0; for (int i = 0; i < m; i++) { if ((1 << i) & mask) { sum += b[i]; } } if (sum == ans) { ok = true; break; } } if (ok) cout << "YES\n"; else cout << "NO\n"; } else { multiset < int > s; for (int i = 0; i < m; i++) { s.insert(b[i]); } bool f = true; for (int i = 0; i < n; i++) { auto it = s.find(a[i]); if (it != s.end()) { s.erase(a[i]); } else { f = false; break; } } if (!f) { cout << "NO\n"; } else { cout << "YES\n"; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...