hey bro… I think my logic nd ur logic are same … i also need help…whats the wrong in this logic
import java.util.;
import java.io.;
class MyClass {
public static int mod= 1000000007;
public static int[] merge(int[] a,int[] b) {
int[] m = new int[a.length+b.length];
int i=0,j=0,k=0;
while(i<a.length && j<b.length) {
if(a[i]<b[j]) {
m[k]=a[i];
i++;
} else {
m[k]=b[j];
j++;
}
k++;
}
while(i<a.length) {
m[k]=a[i];
i++;
k++;
}
while(j<b.length) {
m[k]=b[j];
j++;
k++;
}
return m;
}
public static int[] sort(int[] a,int lo,int hi) {
if(lo>=hi) {
int[] ba = new int[1];
ba[0]=a[hi];
return ba;
}
int mi = (lo+hi)/2;
int[] fh = sort(a,lo,mi);
int[] sh = sort(a,mi+1,hi);
int[] fa = merge(fh,sh);
return fa;
}
public static int search(int[] a,int n) {
int lo = 0;
int hi = a.length-1;
while(lo<=hi) {
int mi = (lo+hi)/2;
if(a[mi]==n) {
return mi;
} else if(a[mi]<n) {
lo=mi+1;
} else {
hi=mi-1;
}
}
if(a[hi]!=n) {
hi++;
}
return hi;
}
public static long diff(long a,long b) {
return a-b;
}
public static long add(long a,long b) {
return a+b;
}
public static long rem(long a,long b) {
return a%b;
}
public static long div(long a,long b) {
return a/b;
}
public static void main(String args[]) throws java.lang.Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t= Integer.parseInt(br.readLine());
while(t-->0) {
String[] s1 = br.readLine().split(" ");
int n = Integer.parseInt(s1[0]);
String[] s2 = br.readLine().split(" ");
String[] s3 = br.readLine().split(" ");
int[] a = new int[n];
int[] b = new int[n-1];
long soa =0;
long sob =0;
for(int i=0;i<n;i++) {
a[i]=Integer.parseInt(s2[i]);
soa = add(soa,a[i]);
// soa = (long)(soa+a[i]);
if(i<n-1) {
b[i]=Integer.parseInt(s3[i]);
sob = add(sob,b[i]);
// sob = (long)(sob+b[i]);
}
}
long min = Long.MAX_VALUE;
for(int i=0;i<n;i++) {
long soe = diff(soa,a[i]);
long r = rem(diff(sob,soe),n-1);
// long soe = (long)(soa-a[i]);
// long r = (long)(sob-soe)%(n-1);
if(r==0) {
long q = div(diff(sob,soe),n-1);
// long q = (long)(sob-soe)/(n-1);
if(min>=q && q>0) {
min=q;
}
}
}
System.out.println(min);
}
}
I have same problem with this task, I don’t know how, but founded answer doesn’t give correct answer if will sub it from B array (b[i] not found in A while I searching it). In that case I found nearest number from A and add difference to X and I got AC
n = int(input())
for i in range(n):
n = int(input())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
s_a = sum(a)
s_b = sum(b)
s_diff = s_b - s_a
x = 5 * 10 ** 9 + 1
for j in range(n):
s_curr = s_diff + a[j]
if s_curr > 0 and s_curr % (n - 1) == 0:
x_1 = s_curr // (n - 1)
x = min(x, x_1)
a = set(a)
for i in range(n - 1):
b[i] -= x
if b[i] not in a:
closest = min(a, key=lambda g: abs(g - b[i]))
x += (closest - b[i])
print(x)