¿Por qué mi código solo pasa números pequeños y no los grandes (con respecto a subconjuntos no divisibles)?

Tus condiciones donde k es par están mal. Su extraña condición de k es perfectamente correcta.

Déjame decirte dónde te equivocaste en tu condición pareja para k.

No puede comenzar su índice con 0 porque si tiene más de dos elementos con% K = 0, sumarán y darán un número ua que es divisible por k. Entonces comienzas tu índice con 1 y subes a i <mid + 1, tal como lo hiciste en una condición extraña. Pero hay una diferencia cuando i == mid, seré igual a k – i, por lo que son esencialmente lo mismo, entonces lo que haces es cuando i == mid, tomas el mínimo de (1, d [i] ) porque puede tener un máximo de 1 elemento, ya que dos elementos de d [mid] le darán una suma divisible por K. También ahora, dado que está comenzando tanto su condición par como su condición impar para k con i = 1, debe tener cuidado de i = 0. Es simple, tome el mínimo de (1, d [0]) porque más de un elemento de d [0] dará como resultado una suma divisible por k. También como lo señaló Chandra, haga que sea largo, largo, int

La razón podría ser un desbordamiento de enteros. Usted ha declarado que todos los valores son ‘int’.

Las variables ‘int’ pueden almacenar valores en el rango -10 ^ 5 a 10 ^ 5. Pero en el enunciado del problema

  • el rango para los valores de la matriz es 10 ^ 9, lo que resulta en un desbordamiento. Así que reemplaza todos los sucesos.

de ‘int’ con ‘long long int’ y los especificadores de formato de ‘% d’ a ‘% lld’.

EDITAR: Después de un examen algo cuidadoso, no creo que sea un problema.