Submission #16726993


Source Code Expand

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

#define endl '\n'

const int max_n = 2e5 + 5;

int n, co;
int seen[max_n];
int a[max_n], b[max_n];
int A[max_n], B[max_n];
int L[max_n], R[max_n];

int r() {
	int x = (rand()%1000)*1000 + rand()%1000;
	return x%n;
}

bool FindMatch(int i) {
	for(int j = 0; j < 2000; j++) {
		int foo = r();
		if(a[i] != b[foo] && seen[foo] != co) {
			seen[foo] = co;
			if(R[foo] < 0 || FindMatch(R[foo])) {
				L[i] = foo;
				R[foo] = i;
				return true;
			}
		}
	}
	return false;
}

int BipartiteMatching() {
	memset(L, -1, sizeof L);
	memset(R, -1, sizeof R);
	for(int i=0; i<n; i++) {
		if(a[i] != b[i]) {
			L[i] = R[i] = i;
		}
	}
	for(int i = 0; i < n; i++) {
		if(L[i] == -1) {
			co = i + n;
			if(!FindMatch(i)) return 0;
		}
	}
	return 1;
}

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	srand(time(NULL));

	cin >> n;
	for(int i=0; i<n; i++) {
		cin >> a[i];
		A[a[i]]++;
	}
	for(int i=0; i<n; i++) {
		cin >> b[i];
		B[b[i]]++;
	}

	for(int i=1; i<max_n; i++) {
		if(B[i] > n - A[i]) {
			cout << "No" << endl;
			return 0;
		}
	}

	reverse(b, b+n);
	if(BipartiteMatching()) {
		cout << "Yes" << endl;
		for(int i=0; i<n; i++) {
			cout << b[L[i]] << " ";
		}
	}
	else {
		cout << "No" << endl;
	}
	return 0;
}

Submission Info

Submission Time
Task F - Contrast
User anis
Language C++ (GCC 9.2.1)
Score 600
Code Size 1364 Byte
Status AC
Exec Time 251 ms
Memory 23436 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status AC
AC × 50
Set Name Test Cases
Sample
All case03, case04, case05, case06, case07, case08, case09, case10, case11, case12, case13, case14, case15, case16, case17, case18, case19, case20, case21, case22, case23, case24, case25, case26, case27, case28, case29, case30, case31, case32, case33, case34, case35, case36, case37, case38, case39, case40, case41, case42, case43, case44, case45, case46, case47, case48, case49, sample00, sample01, sample02
Case Name Status Exec Time Memory
case03 AC 8 ms 3500 KiB
case04 AC 2 ms 3532 KiB
case05 AC 2 ms 3640 KiB
case06 AC 2 ms 3516 KiB
case07 AC 5 ms 5196 KiB
case08 AC 7 ms 5060 KiB
case09 AC 2 ms 3584 KiB
case10 AC 5 ms 5072 KiB
case11 AC 5 ms 5020 KiB
case12 AC 49 ms 6712 KiB
case13 AC 27 ms 5228 KiB
case14 AC 29 ms 6628 KiB
case15 AC 46 ms 6620 KiB
case16 AC 41 ms 6712 KiB
case17 AC 213 ms 16528 KiB
case18 AC 112 ms 18932 KiB
case19 AC 89 ms 16744 KiB
case20 AC 100 ms 17956 KiB
case21 AC 111 ms 22972 KiB
case22 AC 209 ms 15016 KiB
case23 AC 211 ms 18948 KiB
case24 AC 199 ms 17132 KiB
case25 AC 187 ms 12652 KiB
case26 AC 197 ms 19100 KiB
case27 AC 46 ms 6720 KiB
case28 AC 25 ms 5068 KiB
case29 AC 25 ms 5076 KiB
case30 AC 227 ms 21968 KiB
case31 AC 43 ms 6636 KiB
case32 AC 169 ms 19100 KiB
case33 AC 56 ms 13944 KiB
case34 AC 138 ms 11100 KiB
case35 AC 56 ms 8264 KiB
case36 AC 241 ms 21464 KiB
case37 AC 198 ms 16516 KiB
case38 AC 235 ms 23436 KiB
case39 AC 251 ms 22964 KiB
case40 AC 208 ms 18688 KiB
case41 AC 248 ms 20208 KiB
case42 AC 185 ms 13068 KiB
case43 AC 204 ms 15632 KiB
case44 AC 197 ms 16612 KiB
case45 AC 187 ms 16720 KiB
case46 AC 64 ms 17224 KiB
case47 AC 10 ms 5384 KiB
case48 AC 43 ms 6744 KiB
case49 AC 73 ms 19840 KiB
sample00 AC 8 ms 5132 KiB
sample01 AC 3 ms 3600 KiB
sample02 AC 4 ms 5144 KiB