Submission #1208966

#TimeUsernameProblemLanguageResultExecution timeMemory
1208966i_love_springBitwise (BOI06_bitwise)C++20
100 / 100
1 ms328 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ar array void solve() { int n,p; cin >> n >> p; vector<int> a(n),b(n),k(p + 1,0),check(p,0); for (int i = 1; i <= p;i++) { cin >> k[i]; k[i] +=k[i - 1]; } for (int i = 0; i < n;i++) cin >> a[i] >> b[i]; ll ans = 0; for (int i = 30; i >= 0;i--) { bool ok = 1; int set = 1 << i; for (int j = 0; j < p;j++) { if (check[j]) continue; bool kk = 0; for (int v = k[j]; v < k[j + 1];v++) { kk |= (b[v] >= set); } ok &= kk; } for (int j = 0; j < p;j++) { int q = 0, q1 = 0; for (int v = k[j];v < k[j + 1];v++) { q += (b[v] >= set); q1 += (b[v] >= set && a[v] < set); } for (int v = k[j];v < k[j + 1];v++) { if (q1 > 0 && (!ok || q > 1)) check[j] = 1; if (b[v] < set) continue; a[v] -= set; b[v] -= set; } } if (ok) ans += set; } cout << ans; } signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int t = 1; // cin >> t; while (t--) { solve(); cout << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...