QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#480911 | #9104. Zayin and Forest | bad_solver# | TL | 0ms | 0kb | C++23 | 1.9kb | 2024-07-16 19:35:32 | 2024-07-16 19:35:33 |
answer
#include <bits/stdc++.h>
#define pb push_back
#define sz(x) (int)x.size()
#define all(x) x.begin(), x.end()
#define f first
#define s second
using namespace std;
using ll = long long;
using pii = pair <int, int>;
const int N = 1e5 + 5;
ll f(ll x) {
if (x % 2 == 0)
return x + 1;
ll res = 1;
while (res <= x)
res <<= 1;
for (ll i = 0; ; ++i) {
if (((x >> i) & 1) && !((x >> (i + 1)) & 1)) {
res = min(res, x - (1ll << i) + (1ll << (i + 1)));
return res;
}
if ((x >> i) & 1)
x -= (1 << i);
}
}
ll n, t[300 * N];
int m;
vector <ll> vals;
void add(int x, int v) {
for ( ; x < sz(vals); x |= x + 1)
t[x] += v;
}
ll get(int x) {
ll ans = 0;
for (; x >= 0; x &= x + 1, --x) {
ans += t[x];
}
return ans;
}
int tp[N], v[N];
ll l[N], r[N], x[N];
int main() {
ios :: sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
for (int i = 0; i < m; ++i) {
cin >> tp[i];
if (tp[i] & 1) {
cin >> x[i] >> v[i];
ll cur = x[i];
while (cur <= n) {
vals.pb(cur);
cur = f(cur);
}
} else {
cin >> l[i] >> r[i];
}
}
sort(all(vals));
vals.erase(unique(all(vals)), vals.end());
assert(sz(vals) < 300 * N);
for (int i = 0; i < m; ++i) {
if (tp[i] & 1) {
while (x[i] <= n) {
int p = lower_bound(all(vals), x[i]) - vals.begin();
add(p, v[i]);
x[i] = f(x[i]);
}
} else {
int R = upper_bound(all(vals), r[i]) - vals.begin() - 1;
int L = upper_bound(all(vals), l[i] - 1) - vals.begin() - 1;
cout << get(R) - get(L) << '\n';
}
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Time Limit Exceeded
input:
1000000000 20000 2 384578735 526547442 1 64211261 592970906 1 512065247 448267721 1 44993150 127180320 1 880319036 927623947 1 170536687 572121854 1 896600029 804033011 1 666246328 754201635 1 654066651 179982083 2 240989825 984888006 2 372004567 858916479 2 76127818 98606736 1 181794163 902842353 1...