QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#117678#6630. Triangle Collectionsomethingnew#0 1ms3824kbC++232.7kb2023-07-01 23:03:212024-05-31 18:46:59

Judging History

你现在查看的是最新测评结果

  • [2024-05-31 18:46:59]
  • 评测
  • 测评结果:0
  • 用时:1ms
  • 内存:3824kb
  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-07-01 23:03:21]
  • 提交

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%