Hey guys I just tried the Anton and School problem , hope you might like my solution feel free to comment better solution .
#include <stdio.h>
#define N 200000
#define B 30
int main() {
int i, j, n;
long long sum;
static int aa[N], bb[N], cc[N], kk[B];
scanf(“%d”, &n);
sum = 0;
for (i = 0; i < n; i++) {
scanf(“%d”, &bb[i]);
sum += bb[i];
}
for (i = 0; i < n; i++) {
scanf(“%d”, &cc[i]);
sum += cc[i];
}
if (sum % (2 * n) != 0) {
printf(“-1\n”);
return 0;
}
sum /= 2 * n;
for (i = 0; i < n; i++) {
int a = bb[i] + cc[i];
if (a < sum) {
printf(“-1\n”);
return 0;
}
a -= sum;
if (a % n != 0) {
printf(“-1\n”);
return 0;
}
aa[i] = a / n;
}
for (i = 0; i < n; i++)
for (j = 0; j < B; j++)
if ((aa[i] & 1 << j) > 0)
kk[j]++;
for (i = 0; i < n; i++) {
long long b, c;
b = c = 0;
for (j = 0; j < B; j++)
if ((aa[i] & 1 << j) > 0) {
b += (long long) (1 << j) * kk[j];
c += (long long) (1 << j) * n;
} else {
b += (long long) (1 << j) * 0;
c += (long long) (1 << j) * kk[j];
}
if (b != bb[i] || c != cc[i]) {
printf(“-1\n”);
return 0;
}
}
for (i = 0; i < n; i++)
printf(“%d “, aa[i]);
printf(“\n”);
return 0;
}