You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.2 KiB
C++
49 lines
1.2 KiB
C++
#define _CRT_SECURE_NO_WARNINGS
|
|
#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING
|
|
#include <bits/stdc++.h>
|
|
using namespace std;
|
|
const int N = 2e5 + 50;
|
|
int a[N], b[N];
|
|
int main()
|
|
{
|
|
int n;
|
|
scanf("%d", &n);
|
|
for (int i = 0; i < n; i++) scanf("%d", a + i);
|
|
for (int i = 0; i < n; i++) scanf("%d", b + i);
|
|
multiset<int> A{a, a + n}, B{b, b + n};
|
|
deque<int> q{b, b + n};
|
|
int zcnt = count(b, b + n, 0);
|
|
int opcnt = 0;
|
|
while (zcnt)
|
|
{
|
|
for (auto i : q)
|
|
printf("%2d ", i);
|
|
puts("");
|
|
if (A.count(q.back() + 1))
|
|
{
|
|
A.erase(q.back() + 1);
|
|
q.push_back(q.back() + 1);
|
|
B.insert(q.back() + 1);
|
|
if (q.front() == 0) zcnt--;
|
|
A.insert(q.front());
|
|
B.erase(q.front());
|
|
q.pop_front();
|
|
opcnt++;
|
|
}
|
|
else
|
|
{
|
|
A.erase(A.begin());
|
|
q.push_back(0);
|
|
B.insert(0);
|
|
zcnt++;
|
|
if (q.front() == 0) zcnt--;
|
|
A.insert(q.front());
|
|
B.erase(q.front());
|
|
q.pop_front();
|
|
opcnt++;
|
|
}
|
|
}
|
|
printf("%d", opcnt);
|
|
return 0;
|
|
}
|