QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#213073 | #4808. Great Party | ucup-team1209# | WA | 1ms | 3612kb | C++20 | 1.3kb | 2023-10-14 11:10:07 | 2023-10-14 11:10:07 |
Judging History
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'