QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#525710 | #2674. Vision program | arbuzick# | 0 | 3ms | 4928kb | C++20 | 4.7kb | 2024-08-20 20:58:02 | 2024-08-20 20:58:02 |
answer
#include "vision.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> get_short(vector<int> ns) {
map<int, int> cnt;
for (auto vl : ns) {
cnt[vl]++;
}
vector<int> ns2;
for (auto [vl, c] : cnt) {
if (c % 2 == 1) {
ns2.push_back(vl);
}
}
if (ns2.empty()) {
ns2.push_back(0);
ns2.push_back(0);
}
return ns2;
}
vector<vector<int>> multiply(vector<int> a, vector<int> b, bool fl = false) {
vector<vector<int>> res(a.size() + b.size() - 1);
if (a.size() == 1) {
for (int i = 0; i < (int)res.size(); ++i) {
res[i].push_back(add_and({a[0], b[i]}));
}
return res;
}
vector<int> a1, a2, b1, b2;
for (int i = 0; i < (int)a.size() / 2; ++i) {
a1.push_back(a[i]);
}
for (int i = (int)a.size() / 2; i < (int)a.size(); ++i) {
a2.push_back(a[i]);
}
for (int i = 0; i < (int)b.size() / 2; ++i) {
b1.push_back(b[i]);
}
for (int i = (int)b.size() / 2; i < (int)b.size(); ++i) {
b2.push_back(b[i]);
}
vector<int> a12(max(a1.size(), a2.size())), b12(max(b1.size(), b2.size()));
for (int i = 0; i < (int)a12.size(); ++i) {
if (i < (int)a1.size() && i < (int)a2.size()) {
a12[i] = add_xor({a1[i], a2[i]});
} else if (i < (int)a1.size()) {
a12[i] = a1[i];
} else {
a12[i] = a2[i];
}
}
for (int i = 0; i < (int)b12.size(); ++i) {
if (i < (int)b1.size() && i < (int)b2.size()) {
b12[i] = add_xor({b1[i], b2[i]});
} else if (i < (int)b1.size()) {
b12[i] = b1[i];
} else {
b12[i] = b2[i];
}
}
vector<vector<int>> res1 = multiply(a1, b1), res2 = multiply(a12, b12), res3(a2.size() + b2.size() - 1);
if (!fl) {
res3 = multiply(a2, b2);
}
vector<vector<int>> temp(res.size());
for (int i = 0; i < (int)res2.size(); ++i) {
if (i < (int)res1.size() && i < (int)res2.size()) {
for (auto vl : res1[i]) {
temp[i + a1.size()].push_back(vl);
}
for (auto vl : res3[i]) {
temp[i + a1.size()].push_back(vl);
}
} else if (i < (int)res1.size()) {
for (auto vl : res1[i]) {
temp[i + a1.size()].push_back(vl);
}
} else if (i < (int)res3.size()) {
for (auto vl : res3[i]) {
temp[i + a1.size()].push_back(vl);
}
}
}
for (int i = 0; i < (int)res1.size(); ++i) {
for (auto vl : res1[i]) {
temp[i].push_back(vl);
}
}
for (int i = 0; i < (int)res2.size(); ++i) {
for (auto vl : res2[i]) {
temp[i + a1.size()].push_back(vl);
}
}
for (int i = 0; i < (int)res3.size(); ++i) {
for (auto vl : res3[i]) {
temp[i + a1.size() + b1.size()].push_back(vl);
}
}
return temp;
}
void construct_network(int h, int w, int k) {
vector<int> hs(h), ws(w);
for (int i = 0; i < h; ++i) {
vector<int> ns;
for (int j = 0; j < w; ++j) {
ns.push_back(i * w + j);
}
hs[i] = add_or(ns);
}
for (int i = 0; i < w; ++i) {
vector<int> ns;
for (int j = 0; j < h; ++j) {
ns.push_back(j * w + i);
}
ws[i] = add_or(ns);
}
vector<int> hd(h), wd(w);
vector<int> a = hs, b = hs;
reverse(b.begin(), b.end());
vector<vector<int>> res = multiply(a, b, true);
hd[0] = add_xor(hs);
for (int i = 1; i < h; ++i) {
res[h - 1 - i] = get_short(res[h - 1 - i]);
// res[h - 1 + i] = get_short(res[h - 1 + i]);
int t1 = add_xor(res[h - 1 - i]);
// int t2 = add_xor(res[h - 1 + i]);
// hd[i] = add_or({t1, t2});
hd[i] = t1;
}
a = ws, b = ws;
reverse(b.begin(), b.end());
res = multiply(a, b, true);
wd[0] = add_xor(ws);
for (int i = 1; i < w; ++i) {
res[w - 1 - i] = get_short(res[w - 1 - i]);
// res[w - 1 + i] = get_short(res[w - 1 + i]);
int t1 = add_xor(res[w - 1 - i]);
// int t2 = add_xor(res[w - 1 + i]);
// wd[i] = add_or({t1, t2});
wd[i] = t1;
}
vector<int> temp;
for (int i = 0; i < (int)hd.size() && i <= k; ++i) {
if (k - i < (int)wd.size()) {
if (w != 1 && h != 1) {
temp.push_back(add_and({hd[i], wd[k - i]}));
} else if (i == 0 || i == k) {
temp.push_back(add_and({hd[i], wd[k - i]}));
}
}
}
add_or(temp);
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 4004kb
input:
c2675211-ade0-44b0-8c15-741dd835f3d2 1 3 1 -1
output:
b17553fd-ba5a-4140-836c-491f938c515b OK 19 1 3 0 1 2 1 1 0 1 1 1 1 1 2 0 2 3 3 2 1 3 2 2 4 5 2 2 6 5 0 2 4 6 2 2 9 6 2 2 10 4 0 2 9 10 0 2 12 13 0 2 6 4 2 3 4 5 6 2 2 11 14 2 1 11 0 2 8 18 1 1 20
result:
wrong answer on inputs (0, 0), (0, 1), expected 1, but computed 0
Subtask #2:
score: 0
Wrong Answer
Test #19:
score: 0
Wrong Answer
time: 0ms
memory: 4100kb
input:
c2675211-ade0-44b0-8c15-741dd835f3d2 1 9 3 -1
output:
b17553fd-ba5a-4140-836c-491f938c515b OK 85 1 9 0 1 2 3 4 5 6 7 8 1 1 0 1 1 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 0 2 9 9 2 1 9 2 2 10 14 2 2 11 15 2 2 12 16 2 2 13 17 2 2 18 14 2 2 17 13 2 2 16 12 2 2 15 11 2 2 10 12 2 2 11 13 2 2 18 16 2 2 17 15 2 2 10 11 2 2 18 17 0 2 10 18 0 2 33 34 0 2 11 ...
result:
wrong answer on inputs (0, 3), (0, 4), expected 0, but computed 1
Subtask #3:
score: 0
Skipped
Dependency #2:
0%
Subtask #4:
score: 0
Skipped
Dependency #3:
0%
Subtask #5:
score: 0
Wrong Answer
Test #48:
score: 0
Wrong Answer
time: 3ms
memory: 4680kb
input:
c2675211-ade0-44b0-8c15-741dd835f3d2 1 199 1 -1
output:
b17553fd-ba5a-4140-836c-491f938c515b WA Too many instructions
result:
wrong answer WA in grader: Too many instructions
Subtask #6:
score: 0
Wrong Answer
Test #70:
score: 8
Accepted
time: 0ms
memory: 3800kb
input:
c2675211-ade0-44b0-8c15-741dd835f3d2 2 2 1 3 128 128 129 128 130 128 131
output:
b17553fd-ba5a-4140-836c-491f938c515b OK 19 1 2 0 1 1 2 2 3 1 2 0 2 1 2 1 3 2 2 4 5 2 2 5 4 0 2 4 5 0 2 8 9 2 2 4 5 2 1 10 2 2 6 7 2 2 7 6 0 2 6 7 0 2 14 15 2 2 6 7 2 1 16 0 2 12 19 0 2 13 18 1 2 20 21
result:
ok
Test #71:
score: 8
Accepted
time: 0ms
memory: 3816kb
input:
c2675211-ade0-44b0-8c15-741dd835f3d2 2 2 2 3 129 129 128 129 131 129 130
output:
b17553fd-ba5a-4140-836c-491f938c515b OK 18 1 2 0 1 1 2 2 3 1 2 0 2 1 2 1 3 2 2 4 5 2 2 5 4 0 2 4 5 0 2 8 9 2 2 4 5 2 1 10 2 2 6 7 2 2 7 6 0 2 6 7 0 2 14 15 2 2 6 7 2 1 16 0 2 13 19 1 1 20
result:
ok
Test #72:
score: 8
Accepted
time: 3ms
memory: 4336kb
input:
c2675211-ade0-44b0-8c15-741dd835f3d2 101 29 1 8 254 254 255 254 227 254 252 254 196 254 224 254 2958 254 2986 254 226
output:
b17553fd-ba5a-4140-836c-491f938c515b OK 4007 1 29 0 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 1 29 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 1 29 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 8...
result:
ok
Test #73:
score: 0
Wrong Answer
time: 3ms
memory: 4308kb
input:
c2675211-ade0-44b0-8c15-741dd835f3d2 101 29 31 92 284 284 330 284 634 284 598 284 114 284 366 284 966 284 814 284 922 284 510 284 474 284 194 284 930 284 42 284 230 284 1002 284 438 284 526 284 778 284 186 284 6 284 958 284 150 284 562 284 886 284 78 284 402 284 850 284 482 284 222 284 367 284 671 2...
output:
b17553fd-ba5a-4140-836c-491f938c515b OK 4034 1 29 0 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 1 29 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 1 29 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 8...
result:
wrong answer on inputs (0, 0), (17, 14), expected 1, but computed 0
Subtask #7:
score: 0
Wrong Answer
Test #101:
score: 0
Wrong Answer
time: 0ms
memory: 4928kb
input:
c2675211-ade0-44b0-8c15-741dd835f3d2 200 200 1 100 524 24804 34853 20956 34628 18830 29184 28919 32573 11364 24911 2226 5624 3715 30838 2206 17143 21162 27531 20198 27242 5007 12724 27160 32586 3535 7307 17015 25466 626 13891 9132 26194 9198 33073 815 7328 6938 21395 9489 30995 10804 21530 14698 394...
output:
b17553fd-ba5a-4140-836c-491f938c515b WA Too many instructions
result:
wrong answer WA in grader: Too many instructions
Subtask #8:
score: 0
Skipped
Dependency #1:
0%