QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#882291 | #9708. Yuuki and a problem | gsn531 | RE | 0ms | 0kb | C++26 | 2.1kb | 2025-02-04 23:21:01 | 2025-02-04 23:21:02 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i, a, b) for(int i = (a); i <= (b); ++i)
#define per(i, a, b) for(int i = (a); i >= (b); --i)
#define lb(x) (x & (-x))
const int maxn = 2e5 + 5;
int n, m, a[maxn], N = 2e5;
int rt[maxn], tot;
struct tree{
int ch[2]; int sum;
}t[maxn * 60];
inline void updt(int &x, int l, int r, int p, int v){
if(!x) x = ++tot; t[x].sum += v;
if(l == r) return;
int mid = l + r >> 1;
if(p <= mid) updt(t[x].ch[0], l, mid, p, v);
else updt(t[x].ch[1], mid + 1, r, p, v);
}
int st[maxn], tp, stt[maxn];
inline int qryr(int l, int r, int L, int R){
if(l >= L and r <= R){
int sum = 0;
rep(i, 1, tp) sum += t[st[i]].sum;
return sum;
}
int mid = l + r >> 1, sum = 0;
if(L <= mid){
rep(i, 1, tp) stt[i] = st[i], st[i] = t[st[i]].ch[0];
sum += qryr(l, mid, L, R);
rep(i, 1, tp) st[i] = stt[i];
}
if(R > mid){
rep(i, 1, tp) stt[i] = st[i], st[i] = t[st[i]].ch[1];
sum += qryr(mid + 1, r, L, R);
rep(i, 1, tp) st[i] = stt[i];
}
return sum;
}
inline int qry(int x, int l, int r){
tp = 0;
for(int i = x; i; i -= lb(i)) st[++tp] = rt[i];
return qryr(1, N, l, r);
}
signed main(){
ios_base::sync_with_stdio(0); cin.tie(NULL);
cin >> n >> m;
rep(i, 1, n) cin >> a[i];
rep(x, 1, n){
for(int i = x; i <= n; i += lb(i))
updt(rt[i], 1, N, a[x], a[x]);
}
while(m--){
int op, x, y; cin >> op >> x >> y;
if(op == 1){
for(int i = x; i <= n; i += lb(i)){
updt(rt[i], 1, N, a[x], -a[x]);
updt(rt[i], 1, N, y, y);
}
a[x] = y;
} else{
int ans = 1;
while(true){
int tmp = qry(y, 1, ans) - qry(x - 1, 1, ans);
if(tmp >= ans) ans = tmp + 1;
else break;
}
cout << ans << '\n';
}
}
return 0;
}
详细
Test #1:
score: 0
Runtime Error
input:
199764 199778 133101 69413 73309 22139 46693 131970 90981 150001 6352 118276 101164 12691 168203 190853 98599 198097 86901 92688 192934 187579 47910 89959 111317 41624 197440 106737 121438 188902 106461 149886 163820 136239 14632 193976 42315 57797 87112 1001 81835 14938 143862 58531 18884 39422 746...