Optimizar la partición de una matriz

Estaba resolviendo una pregunta de desafío de programación pero mi solución estaba dando tiempo de espera / error para grandes números. ¿Alguien puede ayudarme a optimizar mi solución?

Pregunta:

Se le da una matriz A de N enteros. Ahora debe corregir X de manera que la diferencia entre los dos valores siguientes sea mínima:

  1. A[1] * A[2] * A[3] * ......... * A[X]
  2. A[X+1] * A[X+2] * ........... * A[N]

y si hay más valor de X, imprima el más pequeño.

Restricción:

  • 1 <= 1 <= 10^5
  • 1 <= A[i] <= 10^18

Entrada:

  • La primera línea contiene un entero N (para tamaño)
  • La segunda línea contiene números separados por espacios (para matriz)
import java.util.*;
public class Main
{
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in)
        int size=Integer.parseInt(s.nextLine);
        long arr[]=new long[size];
        for(int i=0;i<=size;i++){
            arr[i]=s.nextLong();
        }   
        long part1=1,part2=1;
        long diff=1;long minIndex=0;long minNo=0;

        for(int k=0;k<size-1;k++){
            part1=1;part2=1;
            //minIndex=k;
            for (int i=0;i<=k ; i++){
                part1=part1*arr[i];
            } 
            for(int j=k+1;j<=size;j++){
                part2=part2*arr[j];
            }
            //System.out.println(part1+"---"+part2);
            diff=Math.abs(part1-part2);
            if(k==0){
                minNo=diff;
                minIndex=k;
            }
            //System.out.println(diff);
            if(minNo>diff){

                 minNo=diff;
                 minIndex=k;
            }


        }
        System.out.println("MinNo: "+minNo+" Index: "+minIndex);



    }
}

Estaba probando contra esta entrada

5
9090909090909009 780009090900909 898989898898898 98998 9999776765576765

La respuesta debería ser 2 (si se cuenta desde cero, luego 1) pero mi código está dando 4.

Respuesta 1

Digamos que tengo los archivos jar de una aplicación Java muy grande, pero no puedo volver a generarlos desde la fuente. También estipulemos que quiero modificar un aspecto del comportamiento indeseable de la aplicación al ...

el siguiente código da un error, porque la variable m se definió dos veces. class one {public static void main (String args []) {int m = 10; int m = 10; }} pero cuando la declaración es ...

Me gustaría producir una serie de cadenas de creación aleatoria de una manera corta. Hay tal manera en caso de ints (en lugar de cadenas), así que estoy buscando algo similar usando org.apache.commons ...

Entonces tengo este problema. Tengo un programa que crea y carga archivos. Cuando cargo un archivo en mi programa, confío en un escucha de componentes que me dice cuándo está el componente específico "lleno", y luego ...