QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#531772 | #186. Street Lamps | isirazeev | 20 | 4649ms | 17608kb | C++20 | 3.4kb | 2024-08-24 22:11:34 | 2024-08-24 22:11:35 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
map<long long, int> F;
void add(int x, int y, int val) {
int st = y;
while (x > 0) {
y = st;
while (y > 0) {
F[(long long) x * (long long) 1e9 + y] += val;
y -= (y & (-y));
}
x -= (x & (-x));
}
}
void add(int l1, int r1, int l2, int r2, int val) {
add(r1, r2, val);
add(l1 - 1, r2, -val);
add(r1, l2 - 1, -val);
add(l1 - 1, l2 - 1, val);
}
const int N = (int) 1e5 * 3 + 10;
int get(int x, int y) {
int res = 0, st = y;
while (x < N) {
y = st;
while (y < N) {
res += F[(long long) x * (long long) 1e9 + y];
y += (y & (-y));
}
x += (x & (-x));
}
return res;
}
set<pair<int, int>> st;
int pr[N];
void insert(int val) {
int L = val, R = val;
if (pr[R + 1] != -1) {
st.erase({R + 1, pr[R + 1]});
R = pr[R + 1];
pr[pr[R]] = -1;
}
if (L >= 1 && pr[L - 1] != -1) {
st.erase({pr[L - 1], L - 1});
L = pr[L - 1];
pr[pr[L]] = -1;
}
st.insert({L, R});
pr[L] = R, pr[R] = L;
}
void del(int val) {
auto it = --st.lower_bound({val + 1, 0});
int L = it->first, R = it->second;
st.erase(it);
pr[L] = pr[R] = -1;
if (val - 1 >= L) {
st.insert({L, val - 1});
pr[L] = val - 1, pr[val - 1] = L;
}
if (val + 1 <= R) {
st.insert({val + 1, R});
pr[val + 1] = R, pr[R] = val + 1;
}
}
int f[N];
void update(int i, int val) {
for (; i < N; i += (i & (-i)))
f[i] += val;
}
int sum(int r) {
int res = 0;
while (r > 0) {
res += f[r];
r -= (r & (-r));
}
return res;
}
int get_sum(int l, int r) {
return sum(r) - sum(l - 1);
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);
for (int i = 0; i < N; i++) pr[i] = -1;
int n, q, L = -1, R = -1;
string t;
cin >> n >> q >> t;
string s = '#' + t;
for (int i = 1; i <= n; i++) {
update(i, s[i] - '0');
if (s[i] == '0') {
if (L != -1)
st.insert({L, R});
L = R = -1;
} else {
if (L == -1) L = R = i;
else R++;
}
}
if (L != -1) st.insert({L, R});
for (auto [a, b]: st)
pr[a] = b, pr[b] = a;
for (int i = 1; i <= q; i++) {
string type;
cin >> type;
if (type == "toggle") {
int ind;
cin >> ind;
if (s[ind] == '0') {
if (pr[ind - 1] != -1) L = pr[ind - 1];
else L = ind;
if (pr[ind + 1] != -1) R = pr[ind + 1];
else R = ind;
insert(ind);
update(ind, 1);
add(L, ind, ind + 1, R + 1, -i);
} else {
auto it = --st.lower_bound({ind + 1, 0});
L = it->first, R = it->second;
del(ind);
update(ind, -1);
add(L, ind, ind + 1, R + 1, i);
}
s[ind] = char(1 - (s[ind] - '0') + '0');
} else {
int a, b;
cin >> a >> b;
int res = get(a, b);
if (get_sum(a, b - 1) == b - a) res += i;
cout << res << "\n";
}
}
return 0;
}
详细
Subtask #1:
score: 20
Accepted
Test #1:
score: 20
Accepted
time: 1ms
memory: 4864kb
input:
5 7 11011 query 1 2 query 1 2 query 1 6 query 3 4 toggle 3 query 3 4 query 1 6
output:
1 2 0 0 1 2
result:
ok 6 lines
Test #2:
score: 20
Accepted
time: 1ms
memory: 4804kb
input:
5 50 01001 query 1 6 toggle 3 toggle 3 toggle 2 toggle 3 toggle 2 toggle 4 query 2 6 query 2 3 query 1 3 query 3 5 toggle 3 query 2 6 query 1 5 query 2 3 query 3 6 toggle 5 toggle 1 toggle 2 toggle 4 query 1 6 query 4 5 toggle 3 query 5 6 toggle 2 query 4 6 toggle 5 toggle 5 toggle 2 query 4 5 query...
output:
0 1 7 0 4 5 0 13 5 0 13 17 10 13 5 5 6 24 0 10 0 5 0 5 6
result:
ok 25 lines
Test #3:
score: 20
Accepted
time: 1ms
memory: 4872kb
input:
10 50 1111010011 toggle 3 toggle 1 toggle 5 toggle 5 toggle 7 query 7 10 query 6 8 query 6 8 toggle 7 toggle 4 toggle 4 toggle 3 toggle 8 toggle 8 toggle 3 query 4 6 query 1 4 toggle 10 query 4 8 query 4 11 toggle 8 toggle 7 query 6 8 toggle 6 query 3 8 toggle 5 toggle 3 toggle 7 toggle 4 query 2 11...
output:
0 2 3 1 1 0 0 5 0 0 0 2 9 0 1 18 30 19 10 1 0 0 0 18
result:
ok 24 lines
Test #4:
score: 20
Accepted
time: 1ms
memory: 4840kb
input:
20 100 01110011111110011110 toggle 16 query 1 13 toggle 2 query 9 21 toggle 8 toggle 7 query 2 5 toggle 18 query 18 21 query 9 11 query 3 5 query 13 20 query 9 10 toggle 4 query 5 21 query 5 19 query 1 15 query 19 21 toggle 16 query 6 21 query 8 21 toggle 14 toggle 19 toggle 1 query 8 11 toggle 13 t...
output:
0 0 3 0 10 11 0 13 0 0 0 0 0 0 5 28 0 34 0 36 0 23 0 0 8 40 0 0 0 0 10 11 5 0 0 0 2 0 0 0 0 38 0 0 37 46
result:
ok 46 lines
Test #5:
score: 20
Accepted
time: 2ms
memory: 5144kb
input:
100 100 1001001110110100110110100110000100100001111010111000011101010010010001101010101001100000111110000010 toggle 43 toggle 13 toggle 19 query 73 101 toggle 65 query 13 59 toggle 1 query 26 101 query 79 83 query 19 101 query 9 94 query 41 91 toggle 55 toggle 87 toggle 37 query 10 31 toggle 26 quer...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
result:
ok 51 lines
Test #6:
score: 20
Accepted
time: 2ms
memory: 4980kb
input:
100 100 0111010000111110011111000001101011010000000000111101011110010111011010010110111110111011101010010010 query 9 10 query 13 14 query 69 70 query 43 44 toggle 82 toggle 92 toggle 6 toggle 63 query 91 92 query 61 62 toggle 70 query 51 52 query 14 15 toggle 16 toggle 2 toggle 40 toggle 98 toggle 5...
output:
0 2 3 0 9 0 0 13 0 24 16 15 17 0 0 41 44 49 50 52 43 56 61 0 64 65 60 0 69 0 76 42 65 80 0 0 60 7 0 52 87 0 96 78 80
result:
ok 45 lines
Test #7:
score: 20
Accepted
time: 2ms
memory: 6072kb
input:
100 100 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 query 1 47 query 42 81 query 18 29 query 31 37 query 4 58 query 46 59 query 32 100 query 12 98 query 13 29 query 40 73 query 68 100 query 28 75 query 55 72 query 53 61 query 2 54 query 25 71 ...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
result:
ok 100 lines
Test #8:
score: 20
Accepted
time: 2ms
memory: 5816kb
input:
100 100 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 query 11 25 query 64 67 query 3 63 query 14 60 query 49 64 query 45 70 query 7 33 query 32 97 query 21 84 query 57 61 query 9 22 query 43 60 query 14 34 query 69 99 query 32 69 query 11 13 qu...
output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
result:
ok 100 lines
Subtask #2:
score: 0
Time Limit Exceeded
Test #9:
score: 20
Accepted
time: 1313ms
memory: 5316kb
input:
100 300000 1100100000000101010010100111010001100010001100111101000010111110001101101110100100100110101010110010 query 13 14 query 42 43 toggle 64 query 78 79 toggle 85 query 35 36 toggle 35 query 4 5 toggle 5 query 4 5 query 42 43 query 35 36 query 13 14 query 14 15 toggle 15 toggle 31 query 20 21 q...
output:
0 0 0 6 0 0 0 7 0 14 0 18 0 0 21 0 26 0 0 36 38 15 41 44 0 47 20 50 52 0 55 52 56 0 35 31 70 73 7 4 0 0 51 83 84 90 44 0 95 97 0 70 0 103 26 8 46 20 109 122 20 109 108 0 0 28 0 135 139 112 35 142 53 146 0 151 0 153 0 0 73 0 164 0 100 0 33 173 135 151 178 180 75 133 189 46 0 197 23 0 200 0 141 206 20...
result:
ok 150010 lines
Test #10:
score: 20
Accepted
time: 1768ms
memory: 5896kb
input:
300 300000 0000110011011101000000010110111010000011000110111111110000110101001100010001010111101111110101100110101111100110110110100000101000001001010110001111100110101100011101011010100111011100111100001011010011000101011101000101010010011001100101000011110000000101000001001101001011110101000100110...
output:
0 0 0 10 0 0 14 0 0 0 22 29 31 0 35 31 0 40 41 0 44 0 0 0 51 20 61 62 37 65 0 0 73 76 63 0 81 5 0 85 87 89 0 0 0 0 0 0 0 100 0 0 21 68 0 111 0 0 117 0 68 0 123 68 125 0 128 0 130 131 0 0 0 137 139 140 142 143 0 147 0 152 154 0 163 0 0 167 0 82 172 174 0 0 177 0 0 0 146 189 0 71 144 0 205 192 154 59 ...
result:
ok 149998 lines
Test #11:
score: 20
Accepted
time: 4649ms
memory: 17608kb
input:
5000 300000 011100011011111101000001011111000101101001000111000101111010100100000100000000000100000100011100001101011000000000000010110011101101011011100100010001011001101101000000111000011101100010001001011000010001101111000001011110110010111001100100111001011101001010101011011110110110111011000100...
output:
0 0 3 0 0 6 7 0 10 18 19 24 0 0 28 0 30 0 33 0 0 41 0 47 0 0 0 0 56 0 62 63 64 65 66 0 71 0 76 80 0 87 0 90 95 0 0 0 102 103 104 108 111 113 0 0 0 121 0 125 0 0 0 130 131 0 0 0 0 144 0 146 0 149 150 152 153 0 0 0 0 162 0 0 169 0 0 0 180 181 182 183 0 185 187 0 0 0 0 0 202 0 0 0 0 0 217 132 0 0 223 2...
result:
ok 149970 lines
Test #12:
score: 0
Time Limit Exceeded
input:
300000 300000 0111110110110011001010010000010111110110100110011000001000101101101101111111010001011100000110100100001111011001011010000010001110000000111010111000111101011010011001100100011010011001011010011110101011101110101111001100000101100111001001000111001010100110110000111110101101110110101000...
output:
0 0 4 5 6 0 8 0 0 0 0 0 0 20 22 0 25 0 27 29 32 0 38 39 40 42 45 0 0 0 54 56 0 0 0 0 0 0 0 0 0 71 72 0 0 75 76 77 78 0 87 0 93 95 97 101 106 107 0 0 0 116 0 119 0 122 123 128 0 0 0 134 137 138 0 0 151 0 0 156 0 0 166 0 170 172 174 175 0 0 179 0 185 187 0 0 200 0 202 203 209 0 220 223 224 225 0 227 2...
result:
Subtask #3:
score: 0
Time Limit Exceeded
Test #17:
score: 20
Accepted
time: 7ms
memory: 6544kb
input:
1000 1003 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
0 0 0
result:
ok 3 lines
Test #18:
score: 20
Accepted
time: 10ms
memory: 6312kb
input:
1000 1003 00100001101000000001000001001000100010000010010010001001001010001010101100010001000010101100000001001111000001110000010110100000100110001000000101001110000001110001000100000011001110000011010100101000000010100110100010000000110000111100100000011000100010010100000000100000000010001001110101...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 304 lines
Test #19:
score: 20
Accepted
time: 8ms
memory: 6512kb
input:
1000 1003 11001001111000111100001101101111110010111101110100101000111001111011110111110111111001110011111110111110101110011101111111111111010111010100011010011100101011111001111010111110111010111011101100100111010000110101110001000011100010111110011001010110101111011101100110001100111000000011000111...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
result:
ok 595 lines
Test #20:
score: 20
Accepted
time: 8ms
memory: 7604kb
input:
1000 1003 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 ...
result:
ok 1003 lines
Test #21:
score: 0
Time Limit Exceeded
input:
300000 300000 0000000000000000000000000000000000000000000000000100000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000...
output:
result:
Subtask #4:
score: 0
Time Limit Exceeded
Test #30:
score: 20
Accepted
time: 10ms
memory: 6528kb
input:
1000 1003 10111011001010101101100010101100100010100110001000000001001100111110101100110100010001111101101100110111110100011000111101100100000110110010101011101001101110111100010100100000110001010001111101001010100101011111010000001110111110001011010111101100000001001110101110011111000101101100011010...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 991 lines
Test #31:
score: 20
Accepted
time: 8ms
memory: 6484kb
input:
1000 1003 01000000111001001110011100111111110011010010110000100010101101101011100011010100100100110101110101010111011100110100110000001010110001011011011010001001101000111011001000000001001100101100010101011101000000101110111011011101100001011110111011001010011101000110100011000101011101000110001011...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 701 lines
Test #32:
score: 20
Accepted
time: 6ms
memory: 6240kb
input:
1000 1003 00010001110110110000001111110000010011011011100111101001011010000111111110001111010101111011100100101000010111101111100011000111001111011011011101000101100000011101001001111110011000100011000001010001011000000010101001101111101111111101011101101000110010110111010111111001101000000100011100...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 369 lines
Test #33:
score: 20
Accepted
time: 7ms
memory: 5516kb
input:
1000 1003 11010001011001111110010101101010111101111001011101011011000001101100000111001101100001111101011101110011011100101011110001000011000011100100111101101101010001001100101111110000000011101101000101010010111101011011101110111011000100001001110111111001110101001010111111011100010001000010110010...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
result:
ok 19 lines
Test #34:
score: 0
Time Limit Exceeded
input:
300000 300000 0101011000000100111010110000000010110110011011010010000110101000100110011001100101101001011010111100100100001011111000001111110110010110111000100111101001011110100000110111110011111010100111011101001110110111011110000010100111111101010010100011101001001000110111111101110000011111100111...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
Subtask #5:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
0%