比赛 EYOI与SBOI开学欢乐赛3rd 评测结果 AAATEEEEEE
题目名称 异或加密 最终得分 30
用户昵称 op_组撒头屯 运行时间 4.492 s
代码语言 C++ 内存使用 138.64 MiB
提交时间 2022-09-05 19:36:51
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n, a[100010], b[100010], vis[2][5010][5010], xans[5010], sum[5010];
map<int, int> id;
int main() {
	freopen("XORcipher.in", "r", stdin);
	freopen("XORcipher.out", "w", stdout);
	cin >> n;
	for(int i = 1; i <= n; i ++) {
		cin >> a[i];
	}
	for(int i = 1; i <= n; i ++) {
		cin >> b[i];
	}
	for(int i = 1; i <= n; i ++) {
		xans[i] = a[1] ^ b[i];
		id[xans[i]] = i;
		vis[0][i][1] = 1;
		vis[1][i][i] = 1;
		sum[i] ++;
//		cout << id[xans[i]] << ' ' << xans[i] << ' ';
	}
//	cout << endl << endl;
	for(int i = 1; i <= n; i ++) {
		for(int j = 1; j <= n; j ++) {
			int x = a[i] ^ b[j];
			if(!id[x]) {
				continue;
			}
//			cout << x << ' ' << id[x] << endl;
			x = id[x];
			if(vis[0][x][i] || vis[1][x][j]) {
				continue;
			}
//			cout << xans[x] << ' ' << a[i] << ' ' << b[j] << endl;
			vis[0][x][i] = 1;
			vis[1][x][j] = 1;
			sum[x] ++;
		}
	}
	for(int i = 1; i <= n; i ++) {
//		cout << sum[i] << endl;
		if(sum[i] == n) {
			cout << xans[i] << endl;
			return 0;
		}
	}
	return 0;
}