QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#53266#4808. Great PartyHunster#WA 3ms3912kbC++1.2kb2022-10-04 21:06:562022-10-04 21:07:03

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-10-04 21:07:03]
  • 评测
  • 测评结果:WA
  • 用时:3ms
  • 内存:3912kb
  • [2022-10-04 21:06:56]
  • 提交

answer

// Petrozavodsk Summer 2022. Day 2. ZJU Contest 1 Problem K Great Party
#include <bits/stdc++.h>
using LL = long long;
const int N = 1e5 + 5;
const int M = 3e6 + 5;
struct Query {int l, r, id;};

LL ans[N];
Query qry[N];
int n, q, a[N], bel[N], block_size;

int main() {
    scanf("%d%d", &n, &q);
    block_size = std::sqrt(n);
    a[0] = (1 << 20);
    for (int i = 1; i <= n; i++) {
        scanf("%d", a + i);
        (a[i] |= 1 << 20) ^= a[i - 1];
        bel[i] = (i - 1) / block_size + 1;
    }
    for (int i = 1, l, r; i <= q; i++) {
        scanf("%d%d", &l, &r);
        qry[i] = {l - 1, r, i};
    }
    std::sort(qry + 1, qry + q + 1, [](Query x, Query y) {return bel[x.l] == bel[y.l] ? x.r < y.r : x.l < y.l;});
    for (int i = 1, l = 0, r = -1; i <= q; i++) {
        static LL sum;
        static int c[M];
        while (l > qry[i].l) sum += c[a[--l]]++;
        while (r < qry[i].r) sum += c[a[++r]]++;
        while (l < qry[i].l) sum -= --c[a[l++]];
        while (r > qry[i].r) sum -= --c[a[r--]];
        ans[qry[i].id] = (1ll * (r - l) * (r - l + 1) >> 1) - sum;
    }
    for (int i = 1; i <= q; i++) printf("%lld\n", ans[i]);
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3772kb

input:

4 5
1 2 2 4
1 2
2 3
3 4
1 3
2 4

output:

3
2
3
5
5

result:

ok 5 number(s): "3 2 3 5 5"

Test #2:

score: 0
Accepted
time: 2ms
memory: 3776kb

input:

4 5
5 6 7 8
1 2
2 3
3 4
1 3
2 4

output:

3
3
3
6
6

result:

ok 5 number(s): "3 3 3 6 6"

Test #3:

score: 0
Accepted
time: 2ms
memory: 3788kb

input:

10 10
3 7 3 1 6 6 10 3 3 3
9 10
5 10
3 7
5 6
5 6
9 10
3 10
1 4
6 6
1 4

output:

2
18
14
2
2
2
33
10
1
10

result:

ok 10 numbers

Test #4:

score: 0
Accepted
time: 1ms
memory: 3732kb

input:

10 8
91 63 1 34 50 11 10 73 96 67
5 9
2 7
2 5
4 7
1 10
3 3
1 4
5 10

output:

15
21
10
10
55
1
10
21

result:

ok 8 numbers

Test #5:

score: 0
Accepted
time: 1ms
memory: 3804kb

input:

10 6
9 539 285 408 615 861 951 413 319 368
4 4
8 10
1 7
3 9
2 3
2 10

output:

1
6
28
28
3
45

result:

ok 6 numbers

Test #6:

score: 0
Accepted
time: 2ms
memory: 3836kb

input:

10 6
1348 7002 4687 6325 8253 5750 2464 5509 6543 8704
3 9
4 8
8 8
8 9
2 9
9 10

output:

28
15
1
3
36
3

result:

ok 6 numbers

Test #7:

score: 0
Accepted
time: 3ms
memory: 3792kb

input:

10 8
59041 28802 92255 14246 65768 79252 70656 81265 98363 85237
1 6
9 10
4 7
6 8
9 10
1 2
1 3
4 5

output:

21
3
10
6
3
3
6
3

result:

ok 8 numbers

Test #8:

score: 0
Accepted
time: 3ms
memory: 3912kb

input:

10 7
28607 249948 373828 584253 989446 308313 199311 253174 283937 133758
2 4
1 2
4 9
7 8
7 8
2 6
1 1

output:

6
3
21
3
3
15
1

result:

ok 7 numbers

Test #9:

score: -100
Wrong Answer
time: 3ms
memory: 3760kb

input:

100 98
6 9 6 10 8 10 3 4 7 5 4 10 2 10 4 5 2 1 7 1 3 1 4 1 1 2 6 9 3 10 2 5 3 2 6 2 1 7 7 6 5 4 2 5 3 2 7 2 6 2 9 7 10 7 4 2 9 3 3 7 9 1 4 9 6 1 5 5 8 3 7 5 8 3 9 5 8 7 8 6 6 3 2 3 8 1 8 1 5 9 1 8 6 3 3 7 10 6 5 5
48 72
14 46
23 28
37 84
1 65
45 72
9 19
9 81
37 53
47 50
25 26
26 88
51 54
53 69
22 94...

output:

316
536
20
1144
2068
395
65
2611
148
10
3
1956
10
146
2611
33
167
6
27
316
604
2977
369
4596
2830
132
1226
53
164
2974
131
3059
798
1496
90
1946
225
65
76
423
335
646
266
1088
907
963
2682
2205
452
149
224
5
3783
1323
102
1229
576
2201
291
677
362
962
1
226
149
723
117
103
3370
911
132
1
90
1143
200...

result:

wrong answer 2nd numbers differ - expected: '534', found: '536'