QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#213073#4808. Great Partyucup-team1209#WA 1ms3612kbC++201.3kb2023-10-14 11:10:072023-10-14 11:10:07

Judging History

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

  • [2023-10-14 11:10:07]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3612kb
  • [2023-10-14 11:10:07]
  • 提交

answer

#include<bits/stdc++.h>
using std::cin;
using std::cout;
using namespace std::ranges;
using u64 = unsigned long long;
const int N = 100005;
const int mod = 998244353;
using ll = long long;
// std::map<std::vector<int>, int> dp[N][N * N];
int n, q;
int a[N];
int pre[N];
int cnt[2][N * 15];
struct qy { int l, r, id; };
std::vector<qy> Q;
ll ans[N];
int get(int l, int r, int p) {
	return r - l + 1 - cnt[p & 1][pre[p]];
}
int main() {
	std::ios::sync_with_stdio(false), cin.tie(0);
	cin >> n >> q;
	for(int i = 1;i <= n;++i) {
		cin >> a[i];
		pre[i] = pre[i - 1] ^ a[i];
	}
	for(int i = 1, l, r;i <= q;++i) {
		cin >> l >> r;
		-- l;
		Q.push_back({l, r, i});
	}
	sort(Q, [](qy x, qy y) {
		const int B = 300;
		if(x.l / B != y.l / B) return x.l < y.l;
		return x.r < y.r;
	});

	int l = 0, r = 0;
	++ cnt[0][0];
	ll sum = 0;

	for(auto [L, R, id] : Q) {
		for(;r < R;) {
			sum += get(l, r, r + 1);
			++ r, ++ cnt[r & 1][pre[r]];
		}
		for(;l > L;) {
			sum += get(l, r, l - 1);
			-- l, ++ cnt[l & 1][pre[l]];
		}
		for(;r > R;) {
			-- cnt[r & 1][pre[r]];
			-- r;
			sum -= get(l, r, r + 1);
		}
		for(;l < L;) {
			-- cnt[l & 1][pre[l]];
			++ l;
			sum -= get(l, r, l - 1);
		}
		ans[id] = sum;
	}
	for(int i = 1;i <= q;++i) {
		cout << ans[i] << '\n';
	}

	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

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: 1ms
memory: 3424kb

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: 1ms
memory: 3468kb

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: 3516kb

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: 3476kb

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: 0ms
memory: 3612kb

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: 0ms
memory: 3496kb

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: 1ms
memory: 3452kb

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: 1ms
memory: 3472kb

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'