QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#624593 | #7678. The Game | hjxddl | WA | 25ms | 3864kb | C++20 | 3.1kb | 2024-10-09 16:11:43 | 2024-10-09 16:11:44 |
Judging History
answer
// Coded by hjxddl
#include <bits/stdc++.h>
#define ll long long
#define db double
const int N = 2e5 + 5;
struct left_tree {
ll dist, val;
int ls, rs;
left_tree() :
dist(0), val(0), ls(0), rs(0) {
}
bool operator<(const left_tree &A) {
return val < A.val;
}
};
int rt;
int merge(int x, int y, std::vector<left_tree> &t) {
if (!x || !y) return x | y;
if (t[y] < t[x]) std::swap(x, y);
// std::cerr << x << " " << y << " " << t[x].rs << " " << t[x].ls << '\n';
t[x].rs = merge(t[x].rs, y, t);
if (t[t[x].ls].dist < t[t[x].rs].dist)
std::swap(t[x].ls, t[x].rs);
t[x].dist = t[t[x].rs].dist + 1;
return x;
}
void solve() {
ll n, m;
std::cin >> n >> m;
std::vector<ll> a(n + 5), b(m + 5), ans(m + 5);
std::vector<left_tree> t(n + 5);
for (int i = 1; i <= n; i++) {
std::cin >> a[i];
t[i].val = a[i];
}
for (int i = 1; i <= m; i++)
std::cin >> b[i];
std::sort(a.begin() + 1, a.begin() + 1 + n);
std::sort(b.begin() + 1, b.begin() + 1 + m);
for (int i = n - m + 1, j = 1; i <= n; i++, j++)
ans[j] = a[i];
ll sum = 0;
for (int i = 1; i <= m; i++) {
sum += b[i] - ans[i];
if (ans[i] > b[i]) {
std::cout << -1 << '\n';
return;
}
}
rt = 1;
for (int i = 2; i <= n; i++)
rt = merge(rt, i, t);
ll rest = n - m;
std::queue<ll> q;
while (sum < rest) {
int x = rt;
// std::cerr << rest << " " << rt << " " << x << " " << t[x].ls << " " << t[x].rs << t[x].val << '\n';
rt = merge(t[rt].ls, t[rt].rs, t);
q.push(t[x].val);
t[x].val++;
t[x].ls = t[x].rs = t[x].dist = 0;
// std::cerr << rest << " " << rt << " " << x << " " << t[x].ls << " " << t[x].rs << t[x].val << '\n';
rt = merge(rt, x, t);
// std::cerr << rest << " " << rt << " " << x << " " << t[x].ls << " " << t[x].rs << t[x].val << '\n';
rt = merge(t[rt].ls, t[rt].rs, t);
rest--;
if (t[x].val > ans[1]) {
sum = sum + ans[1] - t[x].val;
ans[1] = t[x].val;
if (ans[1] > b[1]) {
std::cout << -1 << '\n';
return;
}
}
}
// std::cout << rest << '\n';
// for (int i = 1; i <= m; i++) {
// std::cout << ans[i] << " ";
// }
// std::cout << '\n';
// for (int i = 1; i <= m; i++) {
// std::cout << b[i] << " ";
// }
if (sum > rest) {
std::cout << -1 << '\n';
return;
}
std::cout << n - m << '\n';
while (q.size()) {
std::cout << q.front() << ' ';
q.pop();
}
for (int i = 1; i <= m; i++) {
for (ll j = ans[i]; j < b[i]; j++) {
std::cout << j << ' ';
}
}
std::cout << '\n';
}
int main() {
std::ios::sync_with_stdio(0);
std::cin.tie(0), std::cout.tie(0);
int t = 1;
std::cin >> t;
while (t--) {
solve();
}
std::cout << std::flush;
// system("pause");
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3648kb
input:
6 5 3 1 2 2 3 3 2 3 4 4 2 1 2 2 4 2 4 5 2 2 3 3 4 4 5 5 6 1 1 1 1 1 1 1 4 4 2 1 1 1 2 2 2 4 1 1 1 1 1 2
output:
2 1 3 -1 3 2 4 4 5 1 1 1 2 3 2 1 1 -1
result:
ok ok (6 test cases)
Test #2:
score: 0
Accepted
time: 3ms
memory: 3556kb
input:
7056 4 3 1 1 1 1 1 1 1 4 3 1 1 1 1 1 1 2 4 3 1 1 1 1 1 1 3 4 3 1 1 1 1 1 1 4 4 3 1 1 1 1 1 1 5 4 3 1 1 1 1 1 1 6 4 3 1 1 1 1 1 2 2 4 3 1 1 1 1 1 2 3 4 3 1 1 1 1 1 2 4 4 3 1 1 1 1 1 2 5 4 3 1 1 1 1 1 2 6 4 3 1 1 1 1 1 3 3 4 3 1 1 1 1 1 3 4 4 3 1 1 1 1 1 3 5 4 3 1 1 1 1 1 3 6 4 3 1 1 1 1 1 4 4 4 3 1 1...
output:
-1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 2 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
result:
ok ok (7056 test cases)
Test #3:
score: 0
Accepted
time: 3ms
memory: 3784kb
input:
5880 4 2 1 1 1 1 1 1 4 2 1 1 1 1 1 2 4 2 1 1 1 1 1 3 4 2 1 1 1 1 1 4 4 2 1 1 1 1 1 5 4 2 1 1 1 1 1 6 4 2 1 1 1 1 1 7 4 2 1 1 1 1 2 2 4 2 1 1 1 1 2 3 4 2 1 1 1 1 2 4 4 2 1 1 1 1 2 5 4 2 1 1 1 1 2 6 4 2 1 1 1 1 2 7 4 2 1 1 1 1 3 3 4 2 1 1 1 1 3 4 4 2 1 1 1 1 3 5 4 2 1 1 1 1 3 6 4 2 1 1 1 1 3 7 4 2 1 1...
output:
-1 -1 2 1 2 -1 -1 -1 -1 2 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 2 2 3 -1 -1 -1 2 1 1 2 1 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 2 3 4 -1 -1 -1 2 1 1 2 1 3 -1 -1 -1 2 1 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
result:
ok ok (5880 test cases)
Test #4:
score: 0
Accepted
time: 1ms
memory: 3628kb
input:
2640 4 1 1 1 1 1 1 4 1 1 1 1 1 2 4 1 1 1 1 1 3 4 1 1 1 1 1 4 4 1 1 1 1 1 5 4 1 1 1 1 1 6 4 1 1 1 1 1 7 4 1 1 1 1 1 8 4 1 1 1 1 2 1 4 1 1 1 1 2 2 4 1 1 1 1 2 3 4 1 1 1 1 2 4 4 1 1 1 1 2 5 4 1 1 1 1 2 6 4 1 1 1 1 2 7 4 1 1 1 1 2 8 4 1 1 1 1 3 1 4 1 1 1 1 3 2 4 1 1 1 1 3 3 4 1 1 1 1 3 4 4 1 1 1 1 3 5 4...
output:
-1 -1 3 1 1 2 3 1 2 3 -1 -1 -1 -1 -1 -1 3 1 1 2 3 1 2 3 3 2 3 4 -1 -1 -1 -1 -1 3 1 1 2 3 1 1 3 3 1 3 4 3 3 4 5 -1 -1 -1 -1 -1 3 1 1 2 3 1 1 4 3 1 4 5 3 4 5 6 -1 -1 -1 -1 -1 3 1 1 2 3 1 1 5 3 1 5 6 3 5 6 7 -1 -1 -1 -1 -1 3 1 1 2 3 1 1 6 3 1 6 7 -1 -1 -1 -1 -1 -1 3 1 1 2 3 1 1 7 ...
result:
ok ok (2640 test cases)
Test #5:
score: 0
Accepted
time: 6ms
memory: 3864kb
input:
14112 5 3 1 1 1 1 1 1 1 1 5 3 1 1 1 1 1 1 1 2 5 3 1 1 1 1 1 1 1 3 5 3 1 1 1 1 1 1 1 4 5 3 1 1 1 1 1 1 1 5 5 3 1 1 1 1 1 1 1 6 5 3 1 1 1 1 1 1 2 2 5 3 1 1 1 1 1 1 2 3 5 3 1 1 1 1 1 1 2 4 5 3 1 1 1 1 1 1 2 5 5 3 1 1 1 1 1 1 2 6 5 3 1 1 1 1 1 1 3 3 5 3 1 1 1 1 1 1 3 4 5 3 1 1 1 1 1 1 3 5 5 3 1 1 1 1 1 ...
output:
-1 -1 2 1 2 -1 -1 -1 2 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 2 2 3 -1 -1 -1 2 1 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 2 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -...
result:
ok ok (14112 test cases)
Test #6:
score: 0
Accepted
time: 3ms
memory: 3632kb
input:
5292 5 2 1 1 1 1 1 1 1 5 2 1 1 1 1 1 1 2 5 2 1 1 1 1 1 1 3 5 2 1 1 1 1 1 1 4 5 2 1 1 1 1 1 1 5 5 2 1 1 1 1 1 1 6 5 2 1 1 1 1 1 2 2 5 2 1 1 1 1 1 2 3 5 2 1 1 1 1 1 2 4 5 2 1 1 1 1 1 2 5 5 2 1 1 1 1 1 2 6 5 2 1 1 1 1 1 3 3 5 2 1 1 1 1 1 3 4 5 2 1 1 1 1 1 3 5 5 2 1 1 1 1 1 3 6 5 2 1 1 1 1 1 4 4 5 2 1 1...
output:
-1 -1 -1 3 1 2 3 -1 -1 3 1 1 1 3 1 1 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 3 2 3 4 -1 -1 3 1 1 2 3 1 2 3 -1 -1 3 1 2 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 3 3 4 5 -1 -1 3 1 1 3 3 1 3 4 -1 3 1 1 2 3 1 2 3 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 3 1 1 4 3 1...
result:
ok ok (5292 test cases)
Test #7:
score: 0
Accepted
time: 2ms
memory: 3552kb
input:
3234 5 1 1 1 1 1 1 1 5 1 1 1 1 1 1 2 5 1 1 1 1 1 1 3 5 1 1 1 1 1 1 4 5 1 1 1 1 1 1 5 5 1 1 1 1 1 1 6 5 1 1 1 1 1 1 7 5 1 1 1 1 1 2 1 5 1 1 1 1 1 2 2 5 1 1 1 1 1 2 3 5 1 1 1 1 1 2 4 5 1 1 1 1 1 2 5 5 1 1 1 1 1 2 6 5 1 1 1 1 1 2 7 5 1 1 1 1 1 3 1 5 1 1 1 1 1 3 2 5 1 1 1 1 1 3 3 5 1 1 1 1 1 3 4 5 1 1 1...
output:
-1 -1 4 1 1 1 2 4 1 1 2 3 4 1 2 3 4 -1 -1 -1 -1 4 1 1 2 2 4 1 1 2 3 4 1 2 3 4 4 2 3 4 5 -1 -1 -1 -1 4 1 1 2 3 4 1 1 3 4 4 1 3 4 5 4 3 4 5 6 -1 -1 -1 4 1 1 2 3 4 1 1 2 4 4 1 1 4 5 4 1 4 5 6 -1 -1 -1 -1 4 1 1 2 3 4 1 1 2 5 4 1 1 5 6 -1 -1 -1 -1 -1 4 1 1 2 3 4 1 1 2 6 -1 -1 -1 -1 -1...
result:
ok ok (3234 test cases)
Test #8:
score: 0
Accepted
time: 4ms
memory: 3848kb
input:
8820 5 4 1 1 1 1 1 1 1 1 1 5 4 1 1 1 1 1 1 1 1 2 5 4 1 1 1 1 1 1 1 1 3 5 4 1 1 1 1 1 1 1 1 4 5 4 1 1 1 1 1 1 1 1 5 5 4 1 1 1 1 1 1 1 2 2 5 4 1 1 1 1 1 1 1 2 3 5 4 1 1 1 1 1 1 1 2 4 5 4 1 1 1 1 1 1 1 2 5 5 4 1 1 1 1 1 1 1 3 3 5 4 1 1 1 1 1 1 1 3 4 5 4 1 1 1 1 1 1 1 3 5 5 4 1 1 1 1 1 1 1 4 4 5 4 1 1 1...
output:
-1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 2 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
result:
ok ok (8820 test cases)
Test #9:
score: 0
Accepted
time: 14ms
memory: 3568kb
input:
26460 6 5 1 1 1 1 1 1 1 1 1 1 1 6 5 1 1 1 1 1 1 1 1 1 1 2 6 5 1 1 1 1 1 1 1 1 1 1 3 6 5 1 1 1 1 1 1 1 1 1 1 4 6 5 1 1 1 1 1 1 1 1 1 1 5 6 5 1 1 1 1 1 1 1 1 1 2 2 6 5 1 1 1 1 1 1 1 1 1 2 3 6 5 1 1 1 1 1 1 1 1 1 2 4 6 5 1 1 1 1 1 1 1 1 1 2 5 6 5 1 1 1 1 1 1 1 1 1 3 3 6 5 1 1 1 1 1 1 1 1 1 3 4 6 5 1 1 ...
output:
-1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -...
result:
ok ok (26460 test cases)
Test #10:
score: 0
Accepted
time: 25ms
memory: 3616kb
input:
50000 6 4 1 1 1 1 1 1 1 1 1 1 6 4 1 1 1 1 1 1 1 1 1 2 6 4 1 1 1 1 1 1 1 1 1 3 6 4 1 1 1 1 1 1 1 1 1 4 6 4 1 1 1 1 1 1 1 1 1 5 6 4 1 1 1 1 1 1 1 1 1 6 6 4 1 1 1 1 1 1 1 1 2 2 6 4 1 1 1 1 1 1 1 1 2 3 6 4 1 1 1 1 1 1 1 1 2 4 6 4 1 1 1 1 1 1 1 1 2 5 6 4 1 1 1 1 1 1 1 1 2 6 6 4 1 1 1 1 1 1 1 1 3 3 6 4 1 ...
output:
-1 -1 2 1 2 -1 -1 -1 2 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -...
result:
ok ok (50000 test cases)
Test #11:
score: 0
Accepted
time: 12ms
memory: 3812kb
input:
25872 6 3 1 1 1 1 1 1 1 1 1 6 3 1 1 1 1 1 1 1 1 2 6 3 1 1 1 1 1 1 1 1 3 6 3 1 1 1 1 1 1 1 1 4 6 3 1 1 1 1 1 1 1 1 5 6 3 1 1 1 1 1 1 1 1 6 6 3 1 1 1 1 1 1 1 2 2 6 3 1 1 1 1 1 1 1 2 3 6 3 1 1 1 1 1 1 1 2 4 6 3 1 1 1 1 1 1 1 2 5 6 3 1 1 1 1 1 1 1 2 6 6 3 1 1 1 1 1 1 1 3 3 6 3 1 1 1 1 1 1 1 3 4 6 3 1 1 ...
output:
-1 -1 -1 3 1 2 3 -1 -1 -1 3 1 1 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 3 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 3 2 3 4 -1 -1 -1 3 1 2 3 -1 -1 3 1 2 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 3 1 1 1 3 1 1 2 -1 -1 -1 -1 -1 ...
result:
ok ok (25872 test cases)
Test #12:
score: -100
Wrong Answer
time: 12ms
memory: 3544kb
input:
25872 6 2 1 1 1 1 1 1 1 1 6 2 1 1 1 1 1 1 1 2 6 2 1 1 1 1 1 1 1 3 6 2 1 1 1 1 1 1 1 4 6 2 1 1 1 1 1 1 1 5 6 2 1 1 1 1 1 1 1 6 6 2 1 1 1 1 1 1 1 7 6 2 1 1 1 1 1 1 2 2 6 2 1 1 1 1 1 1 2 3 6 2 1 1 1 1 1 1 2 4 6 2 1 1 1 1 1 1 2 5 6 2 1 1 1 1 1 1 2 6 6 2 1 1 1 1 1 1 2 7 6 2 1 1 1 1 1 1 3 3 6 2 1 1 1 1 1 ...
output:
-1 -1 -1 -1 4 1 2 3 4 -1 -1 4 1 1 1 1 4 1 1 1 2 4 1 1 2 3 -1 -1 -1 4 1 2 1 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 4 2 3 4 5 -1 -1 4 1 1 1 2 4 1 1 2 3 4 1 2 3 4 -1 -1 4 1 1 2 2 4 1 2 2 3 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 4 3 4 5 6 -1 -1 4 1 1 1 3...
result:
wrong answer Wrong answer, erase a number that does not exist (test case 8)