QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#123991 | #89. Restore Array | Qwerty1232# | 7 | 14ms | 3908kb | C++17 | 3.7kb | 2023-07-14 02:34:15 | 2024-07-04 00:38:44 |
Judging History
answer
#include <bits/stdc++.h>
int32_t main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
int n, m;
std::cin >> n >> m;
std::vector<std::array<int, 4>> input(m);
for (auto& [l, r, k, val] : input) {
std::cin >> l >> r >> k >> val;
r++;
k--;
}
const auto true_inp = input;
auto check = [&](std::vector<int> ans) {
bool fail = false;
auto& input = true_inp;
for (auto& [l, r, k, val] : input) {
int sum = std::accumulate(ans.begin() + l, ans.begin() + r, 0);
if (val == 0) {
fail = fail || ((r - l) - sum <= k);
} else {
fail = fail || (sum < (r - l) - k);
}
if (fail) {
break;
}
}
return !fail;
};
if (n <= 18) {
for (int mask = 0; mask < (1 << n); mask++) {
std::vector<int> ans(n);
for (int j = 0; j < n; j++) {
ans[j] = (mask >> j) & 1;
}
if (check(ans)) {
for (int i = 0; i < n; i++) {
std::cout << ans[i] << " \n"[i == n - 1];
}
return 0;
}
}
std::cout << "-1\n";
return 0;
}
std::vector<int> ans(n, -1);
std::array<std::vector<int>, 3> prf;
auto recalc = [&]() {
for (int i = 0; i < 3; i++) {
prf[i].assign(n + 1, 0);
for (int j = 0; j < n; j++) {
prf[i][j + 1] = prf[i][j] + (ans[j] == i - 1);
}
}
};
auto get = [&](int c, int l, int r) {
return prf[c + 1][r] - prf[c + 1][l];
};
while (true) {
recalc();
bool fail = false;
for (auto& [l, r, k, val] : input) {
if (val == 0 && get(0, l, r) > k) {
l = r = k = val = -1;
continue;
}
if (val == 1 && get(1, l, r) >= (r - l - k)) {
l = r = k = val = -1;
continue;
}
if (get(-1, l, r) == 0) {
std::cout << "-1\n";
return 0;
}
if (val == 0 && k == r - l - 1 || val == 1 && k == 0) {
for (int i = l; i < r; i++) {
if (ans[i] >= 0 && ans[i] != val) {
std::cout << "-1\n";
return 0;
}
assert(ans[i] == -1 || ans[i] == val);
ans[i] = val;
}
l = r = k = val = -1;
fail = true;
break;
}
assert(val == 0 && k == 0 || val == 1 && k == r - l - 1);
if (get(-1, l, r) == 1) {
int it = std::find(ans.begin() + l, ans.begin() + r, -1) - ans.begin();
assert(it != r);
ans[it] = val;
l = r = k = val = -1;
fail = true;
break;
}
}
input.erase(std::find(input.begin(), input.end(), std::array<int, 4>{-1, -1, -1, -1}), input.end());
if (!fail) {
for (auto& [l, r, k, val] : input) {
assert(get(-1, l, r) >= 2);
}
for (int i = 0, c = 0; i < n; i++) {
c += ans[i] == -1;
if (ans[i] == -1) {
ans[i] = c % 2;
}
}
// assert(check(ans));
for (int i = 0; i < n; i++) {
std::cout << ans[i] << " \n"[i == n - 1];
}
return 0;
}
}
return 0;
}
详细
Subtask #1:
score: 7
Accepted
Test #1:
score: 7
Accepted
time: 0ms
memory: 3828kb
input:
8 13 0 1 2 1 3 5 1 1 5 7 2 1 0 2 2 0 2 5 3 1 3 7 4 1 2 2 1 0 0 1 1 0 2 7 5 1 2 4 1 0 0 4 2 0 4 5 2 1 1 2 1 0
output:
1 0 0 1 1 1 1 0
result:
ok your plan is correct!
Test #2:
score: 0
Accepted
time: 0ms
memory: 3556kb
input:
7 10 0 3 4 1 2 3 1 0 1 2 2 0 1 3 2 0 0 5 3 0 0 5 5 1 1 4 2 0 2 4 1 0 1 3 3 0 3 5 2 0
output:
1 0 0 0 1 0 0
result:
ok your plan is correct!
Test #3:
score: 0
Accepted
time: 3ms
memory: 3564kb
input:
18 190 12 15 3 0 12 12 1 0 11 11 1 0 5 17 3 0 3 4 1 0 1 14 7 0 15 16 1 0 2 13 10 0 4 11 1 0 0 12 2 0 2 10 6 0 6 6 1 0 12 12 1 0 5 8 1 0 2 7 3 0 13 15 2 0 5 14 6 0 14 14 1 0 9 11 1 0 5 17 13 1 6 17 5 0 0 6 1 0 0 9 3 0 10 14 3 0 5 12 1 0 0 17 16 0 0 15 7 0 1 14 8 0 14 16 3 1 1 3 3 1 4 16 11 0 0 16 4 0...
output:
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0
result:
ok your plan is correct!
Test #4:
score: 0
Accepted
time: 3ms
memory: 3820kb
input:
17 195 12 16 3 1 5 7 3 1 2 10 5 1 5 7 2 1 4 10 7 1 3 9 4 1 8 13 5 1 4 9 2 1 2 7 5 1 1 5 2 1 5 12 3 1 10 13 3 1 5 7 3 1 1 3 3 1 0 9 2 1 3 16 7 1 3 6 3 1 14 16 2 1 3 8 3 1 1 1 1 1 2 15 14 1 1 6 4 1 4 8 1 0 1 2 2 1 4 12 9 1 4 4 1 0 7 13 2 0 2 11 2 0 5 16 2 0 0 3 4 1 9 10 2 1 13 14 2 1 3 8 3 1 11 14 3 1...
output:
1 1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 0
result:
ok your plan is correct!
Test #5:
score: 0
Accepted
time: 14ms
memory: 3756kb
input:
18 200 0 17 13 1 0 14 4 0 3 9 1 1 1 6 5 1 8 9 2 1 9 14 3 1 5 15 1 0 10 16 7 1 7 12 3 0 10 17 1 0 1 16 16 1 11 16 5 0 2 15 12 1 4 13 5 0 3 16 10 0 10 16 7 1 4 10 6 1 6 9 1 0 1 12 7 1 4 16 8 0 0 1 1 0 0 12 8 1 1 4 4 1 1 13 8 0 5 14 6 0 7 16 8 1 7 14 4 0 3 15 11 1 0 6 3 1 12 15 3 0 12 15 2 0 4 17 11 1 ...
output:
-1
result:
ok No Solution!
Test #6:
score: 0
Accepted
time: 7ms
memory: 3628kb
input:
17 195 0 9 10 1 2 11 1 0 4 6 1 0 4 11 1 0 16 16 1 1 4 5 2 1 0 3 1 1 2 12 5 1 2 13 4 0 8 15 3 1 2 3 2 1 6 12 6 0 5 11 3 1 10 16 4 0 12 13 1 1 3 15 6 1 9 14 6 1 2 10 3 0 1 13 3 1 4 7 1 0 0 4 2 1 0 10 9 1 5 14 5 1 1 6 5 1 5 6 2 1 9 14 5 0 1 6 2 1 0 14 7 0 5 6 1 0 12 14 2 0 2 7 4 0 0 4 4 0 12 14 1 0 1 7...
output:
-1
result:
ok No Solution!
Test #7:
score: 0
Accepted
time: 3ms
memory: 3760kb
input:
16 181 6 7 2 1 4 12 2 0 6 12 6 1 8 8 1 0 4 14 3 0 1 12 5 0 15 15 1 1 9 13 4 0 6 7 2 1 2 12 5 0 5 11 7 1 2 4 2 1 4 5 2 1 10 11 2 0 14 14 1 1 9 14 1 0 3 5 2 1 7 11 4 0 6 13 8 1 5 8 4 1 3 11 7 1 3 13 5 0 9 10 2 0 6 11 4 0 3 8 3 0 13 14 2 1 9 11 2 0 5 8 1 0 4 9 4 0 2 2 1 0 1 13 1 0 2 11 5 0 5 14 4 0 0 3...
output:
0 1 0 1 1 0 1 0 0 0 0 0 1 0 1 1
result:
ok your plan is correct!
Test #8:
score: 0
Accepted
time: 3ms
memory: 3544kb
input:
16 172 10 15 1 0 11 12 1 0 3 9 5 1 7 11 5 1 8 10 1 0 5 10 4 0 1 15 11 1 9 11 3 0 4 13 7 0 1 3 2 0 5 10 4 0 7 15 8 1 3 11 4 0 9 15 4 0 7 15 6 0 7 10 3 0 7 13 6 0 8 13 6 1 3 9 4 0 5 9 5 1 7 8 1 0 1 14 4 0 10 14 4 0 11 15 2 0 2 13 6 0 6 11 1 0 1 10 10 1 10 12 1 0 2 10 8 1 5 8 3 0 3 11 4 0 10 10 1 0 3 1...
output:
1 0 0 1 1 0 0 0 1 0 0 0 0 0 1 1
result:
ok your plan is correct!
Test #9:
score: 0
Accepted
time: 9ms
memory: 3552kb
input:
18 198 13 14 1 0 1 5 3 0 7 12 3 1 15 15 1 1 4 15 10 1 8 11 2 1 3 12 3 0 10 15 5 1 0 3 1 0 9 16 1 0 7 7 1 1 10 11 2 1 15 17 1 1 11 16 2 0 10 13 4 1 6 10 5 1 2 11 8 1 2 6 4 1 12 12 1 0 0 9 8 1 11 15 2 0 3 14 12 1 11 14 4 1 1 4 3 0 5 14 9 1 2 9 2 0 2 6 1 0 1 17 13 1 6 15 6 1 3 7 4 1 3 4 2 1 6 9 3 1 7 1...
output:
1 0 0 0 1 1 1 1 0 1 1 1 0 0 1 1 1 1
result:
ok your plan is correct!
Test #10:
score: 0
Accepted
time: 0ms
memory: 3752kb
input:
17 6 1 1 1 0 2 3 1 0 0 0 1 1 2 13 8 1 6 8 1 0 2 5 2 0
output:
1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0
result:
ok your plan is correct!
Subtask #2:
score: 0
Wrong Answer
Test #11:
score: 13
Accepted
time: 2ms
memory: 3908kb
input:
4992 9040 331 4442 1 0 3489 4173 1 0 393 4420 1 0 1324 2666 1 0 1317 4131 1 0 399 3010 1 0 1843 4154 1 0 1119 4876 1 0 4216 4980 1 0 2003 4370 1 0 769 1927 1 0 934 3414 1 0 2072 2507 1 0 215 3526 1 0 1493 4107 1 0 539 1643 1 0 2783 4338 1 0 967 1190 1 0 1374 2868 1 0 34 1378 1 0 71 1418 1 0 2120 223...
output:
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 ...
result:
ok your plan is correct!
Test #12:
score: -13
Wrong Answer
time: 2ms
memory: 3640kb
input:
4952 9496 4222 4300 1 0 2892 4392 1 0 4158 4700 1 0 2720 3468 1 0 3002 3114 1 0 1010 4681 1 0 629 4392 1 0 734 2030 1 0 1024 2836 1 0 299 2880 1 0 3728 4858 1 0 1616 2861 1 0 2716 2938 1 0 1265 2892 1 0 1695 1778 1 0 1414 2231 1 0 47 4835 1 0 1554 3489 1 0 2591 3178 1 0 2424 4665 1 0 1089 2460 1 0 2...
output:
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 ...
result:
wrong answer your plan does not meet the constraint #4201
Subtask #3:
score: 0
Wrong Answer
Dependency #1:
100%
Accepted
Test #17:
score: 25
Accepted
time: 2ms
memory: 3600kb
input:
4938 9881 1814 3083 1 0 2918 2958 41 1 2085 2909 825 1 2595 3342 748 1 1147 2469 1323 1 2697 2734 1 0 407 4791 1 0 568 2847 1 0 2500 2905 1 0 1670 3662 1 0 1692 3400 1709 1 35 436 402 1 1393 2755 1 0 1074 4777 3704 1 552 1519 1 0 3216 3566 351 1 1841 2502 1 0 3 1708 1706 1 90 3062 1 0 1593 2428 1 0 ...
output:
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 ...
result:
ok your plan is correct!
Test #18:
score: 0
Accepted
time: 2ms
memory: 3700kb
input:
4948 9938 597 2134 1 0 192 2940 2749 1 116 4688 4573 1 449 2324 1 0 3526 4697 1172 1 4178 4738 1 0 4472 4845 1 0 323 1072 1 0 724 4075 3352 1 2828 3622 1 0 712 980 269 1 891 1227 1 0 4117 4895 779 1 419 1627 1 0 927 2579 1653 1 1961 3667 1707 1 1065 3028 1 0 2275 4477 2203 1 3396 3451 56 1 1273 1660...
output:
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 ...
result:
ok your plan is correct!
Test #19:
score: -25
Wrong Answer
time: 2ms
memory: 3680kb
input:
4957 9852 86 2229 2144 1 838 3854 1 0 177 2427 1 0 1516 2489 974 1 3404 3854 1 0 2667 3472 1 0 260 834 1 0 3096 4769 1674 1 1288 3517 2230 1 60 4378 4319 1 1905 2286 1 0 21 1956 1 0 2956 3222 1 0 122 4000 1 0 4089 4678 590 1 425 4031 3607 1 1424 2198 1 0 1107 1949 843 1 4262 4638 1 0 327 4871 1 0 12...
output:
1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 ...
result:
wrong answer your plan does not meet the constraint #1042
Subtask #4:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
0%