博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces 734 F Anton and School
阅读量:4978 次
发布时间:2019-06-12

本文共 2019 字,大约阅读时间需要 6 分钟。

Discription

Anton goes to school, his favorite lessons are arraystudying. He usually solves all the tasks pretty fast, but this time the teacher gave him a complicated one: given two arrays b and c of length n, find array a, such that:

where a and b means bitwise AND, while a or b means bitwise OR.

Usually Anton is good in arraystudying, but this problem is too hard, so Anton asks you to help.

Input

The first line of the input contains a single integers n (1 ≤ n ≤ 200 000) — the size of arrays b and c.

The second line contains n integers bi (0 ≤ bi ≤ 109) — elements of the array b.

Third line contains n integers ci (0 ≤ ci ≤ 109) — elements of the array c.

Output

If there is no solution, print  - 1.

Otherwise, the only line of the output should contain n non-negative integers ai — elements of the array a. If there are multiple possible solutions, you may print any of them.

Example

Input
4 6 8 4 4 16 22 10 10
Output
3 5 1 1
Input
5 8 25 14 7 16 19 6 9 4 25
Output
-1 有一个显然的性质就是 (a&b)+(a|b)=a+b。 这个考虑每一位的贡献就行了。 于是我们可以得到c[i]+b[i]=a[i]*n+∑a[],从而可以开开心心的算出每一个a,然后带回去验证一下就可以了
/*   We know that b[i]+c[i]=n*a[i]+∑a[] */#include
#define ll long long#define maxn 200005using namespace std;int b[maxn],c[maxn];int a[maxn],n,m,ci[60];ll tot=0,now;int main(){ ci[0]=1; for(int i=1;i<=30;i++) ci[i]=ci[i-1]<<1; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",b+i),tot+=(ll)b[i]; for(int i=1;i<=n;i++) scanf("%d",c+i),tot+=(ll)c[i]; //tot is used to calculate the sum of array a[] if(tot%(n<<1)){ puts("-1"); return 0; } tot/=(n<<1); for(int i=1;i<=n;i++){ now=c[i]+b[i]-tot; if(now%n){ puts("-1"); return 0; } a[i]=now/n; } for(int i=0;i<=30;i++){ int cnt=0; for(int j=1;j<=n;j++) if(a[j]&ci[i]) cnt++; for(int j=1;j<=n;j++){ if(a[j]&ci[i]) b[j]-=cnt*ci[i],c[j]-=n*ci[i]; else c[j]-=cnt*ci[i]; } } for(int i=1;i<=n;i++) if(c[i]||b[i]){ puts("-1"); return 0; } for(int i=1;i<=n;i++) printf("%d ",a[i]); return 0;}

  

 

转载于:https://www.cnblogs.com/JYYHH/p/8494869.html

你可能感兴趣的文章
Feature toggle
查看>>
day02
查看>>
gvim 配置Pydiction
查看>>
Linux安装指定mysql版本
查看>>
分布式锁的三种实现方式
查看>>
poj 2109 pow函数也能这么用?p的开n次方
查看>>
Oracle database link
查看>>
python调用shell小技巧
查看>>
TL431的几种常用用法
查看>>
js 经典闭包题目详解
查看>>
在项目中移除CocoaPods
查看>>
【洛谷】CYJian的水题大赛【第二弹】解题报告
查看>>
POJ 1703 Find them, Catch them【种类/带权并查集+判断两元素是否在同一集合/不同集合/无法确定+类似食物链】...
查看>>
L1-5. A除以B【一种输出格式错了,务必看清楚输入输出】
查看>>
Git一分钟系列--快速安装git客户端
查看>>
纵越6省1市-重新启动
查看>>
hive安装以及hive on spark
查看>>
jz1074 【基础】寻找2的幂
查看>>
Wannafly模拟赛5 A 思维 D 暴力
查看>>
【Linux开发】CCS远程调试ARM,AM4378
查看>>