QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#117678 | #6630. Triangle Collection | somethingnew# | 0 | 1ms | 3824kb | C++23 | 2.7kb | 2023-07-01 23:03:21 | 2024-05-31 18:46:59 |
Judging History
answer
// ↘ ⬇ ⬇ ⬇ ⬇ ⬇ ↙
// ➡ @roadfromroi ⬅
// ↗ ⬆ ⬆ ⬆ ⬆ ⬆ ↖
#include <iostream>
#include "vector"
#include "algorithm"
#include "numeric"
#include "climits"
#include "iomanip"
#include "bitset"
#include "cmath"
#include "map"
#include "deque"
#include "array"
#include "set"
#include "queue"
#define all(x) x.begin(), x.end()
using namespace std;
#define int long long
struct segtree {
int sz;
vector<int> tree, addk;
segtree(int n) {
sz = 1;
while (sz < n)
sz *= 2;
tree.assign(sz * 2, {});
addk.assign(sz * 2, {});
}
int getv(int v) {
return tree[v] + addk[v];
}
void push(int v) {
addk[v * 2] += addk[v];
addk[v * 2 + 1] += addk[v];
addk[v] = 0;
}
void pull(int v) {
tree[v] = min(getv(v * 2), getv(v * 2 + 1));
}
void add2(int l, int r, int v, int ll, int rr, int x) {
if (ll >= r or rr <= l) {
return;
}
//cerr << l << ' ' << r << v << '\n';
if (ll <= l and r <= rr) {
//cerr << v << ' ' << x << '\n';
addk[v] += x;
return;
}
push(v);
int m = l + r >> 1;
add2(l, m, v * 2, ll, rr, x);
add2(m, r, v * 2 + 1, ll, rr, x);
pull(v);
}
void add(int l, int r, int x) {
return add2(0, sz, 1, l, r+1, x);
}
int get() {
return min(0ll, getv(0));
}
};
void solve() {
int n, q;
cin >> n >> q;
vector<int> a(n), ac;
int sm = 0;
int twdd = 0, ondd = 0;
segtree sg(n);
for (int i = 0; i < n; ++i) {
cin >> a[i];
sm += a[i];
twdd += a[i] / 2;
sg.add(0, min(n-1, i * 2), a[i] / 2);
if (a[i] % 2) {
ondd++;
sg.add(0, i, -1);
}
}
for (int i = 0; i < q; ++i) {
int x, c;
cin >> x >> c;
x--;
twdd -= a[x] / 2;
sg.add(0, min(n-1, x * 2), -a[x] / 2);
if (a[x] % 2) {
ondd--;
sg.add(0, x, 1);
}
a[x] += c;
twdd += a[x] / 2;
sm += c;
sg.add(0, min(n-1, x * 2), a[x] / 2);
if (a[x] % 2) {
ondd++;
sg.add(0, x, -1);
}
int rs = sg.get();
int lft = -rs;
int tw2 = twdd - (ondd - lft);
//cout << sm << ' ' << tw2 << ' ' << lft << ' ' << tw2 << '\n';
cout << (sm - lft - (tw2 * 2 % 3)) / 3 << '\n';
}
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
int t = 1;
while (t--) {
solve();
}
}
/*
4 3
3 1 4 1
3 -3
1 6
2 1
*/
詳細信息
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 5
Accepted
time: 0ms
memory: 3612kb
input:
1 23 1485 1 -12 1 -30 1 -20 1 6 1 24 1 5 1 31 1 14 1 -34 1 -22 1 -45 1 37 1 46 1 9 1 22 1 -9 1 9 1 -46 1 -47 1 39 1 36 1 -36 1 50
output:
491 481 474 476 484 486 496 501 489 482 467 479 495 498 505 502 505 490 474 487 499 487 504
result:
ok 23 numbers
Test #2:
score: 0
Accepted
time: 0ms
memory: 3772kb
input:
12 1 13 79 59 21 32 13 85 40 74 15 49 56 3 31
output:
189
result:
ok 1 number(s): "189"
Test #3:
score: 0
Accepted
time: 1ms
memory: 3628kb
input:
50 1995 3 2 3 0 3 0 5 2 2 2 3 0 4 5 4 4 3 0 1 0 5 5 3 4 3 3 1 1 4 5 5 4 1 1 3 1 4 2 1 3 4 1 5 5 0 3 0 3 4 3 49 1 48 -2 45 3 49 0 31 -4 13 0 15 -2 48 0 38 -2 8 0 48 3 12 1 22 -4 7 -5 5 -1 3 1 15 -2 37 -4 39 -1 24 -2 11 2 35 -2 17 -1 41 -2 20 5 8 0 18 0 26 -3 25 -3 49 -5 31 4 46 -2 38 0 42 3 16 -4 5 3...
output:
44 44 45 45 43 43 43 43 42 42 43 43 42 40 40 40 40 38 38 37 38 37 37 36 38 38 38 37 36 34 36 35 35 36 35 36 36 37 36 37 37 38 38 38 39 38 37 36 36 35 36 36 36 36 35 35 35 35 33 35 35 34 34 33 34 35 36 36 35 35 37 36 36 36 35 35 35 35 35 36 37 37 37 36 37 36 38 38 38 39 39 38 38 38 37 39 39 41 40 40 ...
result:
ok 1995 numbers
Test #4:
score: 0
Accepted
time: 1ms
memory: 3560kb
input:
50 1996 0 1 0 1 2 2 4 1 3 2 5 3 4 1 5 5 1 2 0 2 1 2 5 4 3 1 4 5 1 2 3 5 5 1 4 4 2 3 5 3 1 3 2 3 3 0 4 2 5 0 29 4 50 3 30 2 6 0 26 -1 13 -2 34 1 5 2 23 -5 45 1 30 -4 17 3 40 1 49 -5 24 -1 35 -2 12 -2 30 1 3 0 5 -3 38 0 14 -1 38 2 25 -3 25 0 26 2 20 1 24 2 43 1 27 -2 38 -2 12 3 43 1 4 3 13 1 25 2 26 -...
output:
44 45 46 46 46 45 45 46 44 45 43 44 45 43 43 42 41 42 42 41 41 40 41 40 40 41 41 42 42 41 41 42 42 43 43 44 44 44 44 45 45 46 47 47 47 46 46 44 44 44 44 44 44 44 43 43 42 41 41 42 43 43 45 45 45 45 45 45 45 44 43 44 44 44 45 44 45 46 45 44 43 43 43 43 43 44 44 44 46 45 43 44 44 44 43 44 45 44 44 44 ...
result:
ok 1996 numbers
Test #5:
score: 0
Accepted
time: 1ms
memory: 3824kb
input:
50 1997 39 35 37 37 36 36 38 37 36 36 37 40 37 39 40 37 38 35 36 36 37 36 40 36 40 37 40 37 37 38 39 35 40 36 38 40 35 36 39 38 38 37 35 37 36 37 36 36 36 37 3 0 13 3 33 -3 24 2 25 0 9 3 18 2 11 0 28 2 39 -2 9 -2 5 -1 2 0 25 -3 25 3 47 1 10 4 34 2 8 -1 32 0 47 -2 17 -2 20 0 3 3 39 3 1 -4 18 2 35 0 3...
output:
620 621 620 621 621 622 622 622 623 622 622 621 621 620 621 622 623 624 623 623 623 622 622 623 624 623 623 623 622 622 623 623 624 624 624 625 624 623 622 621 620 619 618 617 615 616 617 617 618 616 616 617 616 616 616 617 619 618 617 617 617 618 619 618 619 618 619 620 619 619 620 621 620 620 621 ...
result:
ok 1997 numbers
Test #6:
score: -5
Wrong Answer
time: 1ms
memory: 3640kb
input:
2000 2000 2 1 2 1 4 1 5 1 0 0 1 2 0 2 2 0 2 1 0 0 1 0 1 1 1 0 4 1 0 0 5 2 1 0 1 6 0 0 1 1 1 0 0 0 0 1 1 0 0 2 0 0 1 1 0 1 1 1 0 0 1 0 3 0 0 0 2 1 0 1 2 0 0 3 2 1 0 0 0 0 1 1 0 1 2 0 0 0 0 0 2 3 0 2 0 4 0 1 2 0 0 0 1 0 1 5 0 0 0 4 0 0 1 2 3 0 1 0 1 0 1 0 2 0 1 0 1 2 1 1 2 1 0 2 0 0 0 2 3 6 1 0 0 0 1 ...
output:
667 667 667 667 667 667 667 667 666 666 667 667 667 667 667 667 667 667 667 667 667 667 667 667 667 666 667 667 666 667 667 667 667 667 667 667 667 666 666 667 666 666 667 667 667 667 667 667 666 666 666 666 666 666 666 666 666 666 667 667 666 667 667 667 667 667 667 667 667 667 667 667 666 667 667 ...
result:
wrong answer 1st numbers differ - expected: '649', found: '667'
Subtask #2:
score: 0
Skipped
Dependency #1:
0%
Subtask #3:
score: 0
Wrong Answer
Test #28:
score: 0
Wrong Answer
time: 1ms
memory: 3704kb
input:
1999 2000 1 1 1 1 0 2 0 2 1 0 2 1 2 2 2 1 2 0 0 1 2 2 0 1 0 1 0 2 0 0 2 1 1 1 1 0 1 2 1 2 1 1 1 1 1 0 2 2 0 2 1 1 2 0 0 2 0 0 2 1 2 0 0 1 1 2 0 2 2 2 1 2 0 2 1 2 0 1 2 2 2 1 1 2 1 1 1 1 0 0 1 1 0 1 2 1 0 0 2 0 2 2 2 0 1 1 2 0 0 1 0 0 2 1 2 1 2 0 1 1 2 2 0 0 1 2 2 1 2 1 2 2 2 0 0 1 1 2 1 1 2 2 2 2 2 ...
output:
665 665 665 665 665 665 665 665 665 665 665 666 666 666 666 666 666 665 666 666 665 665 665 664 664 664 665 665 665 664 665 664 665 664 665 664 664 663 663 664 664 663 664 664 664 664 664 664 664 663 663 663 663 664 664 663 663 664 663 663 663 663 663 662 662 662 662 661 661 661 661 661 661 661 661 ...
result:
wrong answer 1st numbers differ - expected: '660', found: '665'
Subtask #4:
score: 0
Wrong Answer
Test #35:
score: 0
Wrong Answer
time: 1ms
memory: 3700kb
input:
2000 1999 0 1 0 3 0 1 0 0 0 0 0 0 0 2 0 0 0 0 3 1 1 0 2 0 0 3 0 0 0 0 0 4 0 0 1 0 1 0 0 0 0 1 2 1 0 0 0 0 7 0 1 3 1 0 1 1 0 3 2 1 0 1 1 3 3 1 0 2 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 1 2 3 0 1 0 3 3 0 0 0 0 1 0 1 2 0 0 2 2 0 1 2 1 2 0 0 0 1 1 0 1 2 0 0 0 0 2 0 5 0 0 0 0 0 1 0 0 2 0 1 2 0 1 0 0 0 2 0 ...
output:
666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 667 667 667 667 667 666 666 666 667 666 667 667 667 666 666 666 667 667 667 667 667 666 666 666 666 666 666 666 666 666 666 666 665 ...
result:
wrong answer 43rd numbers differ - expected: '666', found: '667'
Subtask #5:
score: 0
Skipped
Dependency #1:
0%