Submission #47753733


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

const int MAX = 100007;
int A[MAX], B[MAX], ans;
map<int, priority_queue<int>, greater<int>> PQ, cand;

void Fail() {
	cout << -1;
	exit(0);
}

int GetGroup(int N) {
	if (!N) return 0;
	while (!(N & 1)) N >>= 1;
	return N;
}
int main() {
	ios::sync_with_stdio(0); cin.tie(0);
	int N;
	cin >> N;
	for (int i = 0; i < N; ++i) cin >> A[i];
	for (int i = 0; i < N; ++i) {
		cin >> B[i];
		PQ[GetGroup(B[i])].push(B[i]);
	}
	PQ[0] = {};

	for (int i = 0; i < N; ++i) {
		int n = A[i];
		while (n && PQ.find(GetGroup(n)) == PQ.end()) {
			while (!(n & 1)) {
				n >>= 1;
				ans++;
			}
			n >>= 1; ans++;
		}
		cand[GetGroup(n)].push(n);
	}

	unordered_map<int, int> diff;
	for (int i = 0; i < 31; ++i) diff[1LL << i] = i;

	for (auto& [n, CPQ] : PQ) {
		if (CPQ.size() > cand[n].size()) Fail();
		if (!n) break;
		while (!CPQ.empty()) {
			int a = CPQ.top(); CPQ.pop();
			int b = cand[n].top(); cand[n].pop();
			ans += diff[max(a, b) / min(a, b)];
		}
		while (!cand[n].empty()) {
			int a = cand[n].top(); cand[n].pop();
			while (a && (PQ.find(GetGroup(a)) == PQ.end() || PQ[GetGroup(a)].empty())) {
				while (!(a & 1)) {
					a >>= 1;
					ans++;
				}
				a >>= 1; ans++;
			}
			cand[GetGroup(a)].push(a);
		}
	}

	cout << ans;
	return 0;
}

Submission Info

Submission Time
Task Ex - Multiply or Divide by 2
User IBory
Language C++ 20 (gcc 12.2)
Score 600
Code Size 1357 Byte
Status AC
Exec Time 142 ms
Memory 26216 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 2
AC × 46
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt
All 00_sample_00.txt, 00_sample_01.txt, 01_srnd_00.txt, 01_srnd_01.txt, 01_srnd_02.txt, 01_srnd_03.txt, 01_srnd_04.txt, 01_srnd_05.txt, 01_srnd_06.txt, 01_srnd_07.txt, 01_srnd_08.txt, 01_srnd_09.txt, 01_srnd_10.txt, 01_srnd_11.txt, 01_srnd_12.txt, 01_srnd_13.txt, 02_rnd_00.txt, 02_rnd_01.txt, 02_rnd_02.txt, 02_rnd_03.txt, 02_rnd_04.txt, 02_rnd_05.txt, 02_rnd_06.txt, 02_rnd_07.txt, 03_rndl_00.txt, 03_rndl_01.txt, 03_rndl_02.txt, 03_rndl_03.txt, 03_rndl_04.txt, 03_rndl_05.txt, 03_rndl_06.txt, 03_rndl_07.txt, 03_rndl_08.txt, 03_rndl_09.txt, 03_rndl_10.txt, 03_rndl_11.txt, 04_max_00.txt, 04_max_01.txt, 04_max_02.txt, 04_max_03.txt, 04_max_04.txt, 04_max_05.txt, 04_max_06.txt, 05_tozero_00.txt, 05_tozero_01.txt, 05_tozero_02.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 5 ms 3376 KiB
00_sample_01.txt AC 1 ms 3340 KiB
01_srnd_00.txt AC 1 ms 3376 KiB
01_srnd_01.txt AC 1 ms 3528 KiB
01_srnd_02.txt AC 1 ms 3524 KiB
01_srnd_03.txt AC 1 ms 3340 KiB
01_srnd_04.txt AC 1 ms 3524 KiB
01_srnd_05.txt AC 1 ms 3468 KiB
01_srnd_06.txt AC 1 ms 3520 KiB
01_srnd_07.txt AC 1 ms 3336 KiB
01_srnd_08.txt AC 1 ms 3452 KiB
01_srnd_09.txt AC 1 ms 3388 KiB
01_srnd_10.txt AC 1 ms 3344 KiB
01_srnd_11.txt AC 1 ms 3440 KiB
01_srnd_12.txt AC 1 ms 3440 KiB
01_srnd_13.txt AC 1 ms 3572 KiB
02_rnd_00.txt AC 72 ms 26056 KiB
02_rnd_01.txt AC 95 ms 26016 KiB
02_rnd_02.txt AC 99 ms 26096 KiB
02_rnd_03.txt AC 124 ms 25760 KiB
02_rnd_04.txt AC 97 ms 26172 KiB
02_rnd_05.txt AC 98 ms 26052 KiB
02_rnd_06.txt AC 103 ms 26052 KiB
02_rnd_07.txt AC 141 ms 25780 KiB
03_rndl_00.txt AC 81 ms 26116 KiB
03_rndl_01.txt AC 65 ms 26176 KiB
03_rndl_02.txt AC 78 ms 25996 KiB
03_rndl_03.txt AC 119 ms 25700 KiB
03_rndl_04.txt AC 95 ms 26112 KiB
03_rndl_05.txt AC 98 ms 26024 KiB
03_rndl_06.txt AC 103 ms 26176 KiB
03_rndl_07.txt AC 141 ms 25844 KiB
03_rndl_08.txt AC 96 ms 26028 KiB
03_rndl_09.txt AC 96 ms 26000 KiB
03_rndl_10.txt AC 103 ms 26216 KiB
03_rndl_11.txt AC 142 ms 25772 KiB
04_max_00.txt AC 24 ms 4932 KiB
04_max_01.txt AC 47 ms 7860 KiB
04_max_02.txt AC 28 ms 6148 KiB
04_max_03.txt AC 88 ms 10672 KiB
04_max_04.txt AC 82 ms 10184 KiB
04_max_05.txt AC 85 ms 10448 KiB
04_max_06.txt AC 89 ms 10556 KiB
05_tozero_00.txt AC 23 ms 4676 KiB
05_tozero_01.txt AC 23 ms 4540 KiB
05_tozero_02.txt AC 23 ms 4656 KiB