Problema de juez en línea (respuesta incorrecta)

problema en Light OJ: 1001 – Tarea opuesta:

Este problema le da una idea del concepto de juez especial. Eso significa que el juez es lo suficientemente inteligente como para verificar su código a pesar de que puede imprimir resultados diferentes. En este problema se le pide que encuentre la tarea opuesta del problema anterior.

Para ser específico, tengo dos computadoras donde almacené mis problemas. Ahora sé que el número total de problemas es n. Y no hay problemas duplicados y puede haber como máximo 10 problemas en cada computadora. Tienes que encontrar el número de problemas en cada una de las computadoras.

Ya que puede haber múltiples soluciones. Cualquier solución válida servirá.

Entrada: la entrada comienza con un entero T (≤ 25), que denota el número de casos de prueba.

Cada caso comienza con una línea que contiene un entero n (0 ≤ n ≤ 20) que denota el número total de problemas.

Salida: para cada caso, imprima la cantidad de problemas almacenados en cada computadora en una sola línea. Un solo espacio debe separar los enteros no negativos. Entrada de muestra

Salida para entrada de muestra:

3 10 7 7 

Salida de muestra:

0 (espacio) 10

0 (espacio) 7

1 (espacio) 6

mi código :

 #include #include  int main() { int c,sum; int i,j,mini=0,maxi; int com1,com2; do{ scanf("%d",&c); }while (c>25); int t[c+1]; for(i=1; i20); } for(i=1; i<=c; i++) { maxi=t[i]; com1=rand() % (maxi - mini + 1) + mini; com2=t[i]-com1; printf("%d %d\n",com1,com2); } return 0; } 

Cuando presento mi código, el juez da una respuesta incorrecta. Pero mientras compilo el código en CodeBlocks, da la respuesta correcta. No puedo entender el problema en el juez en línea. Cómo puedo resolverlo.

La publicación original tiene mini=0 para todos los casos, pero donde el total de problemas es> 10 puede que no funcione. He ajustado eso

 #include #include  int main() { int c = 0, mini, maxi, i, com1, com2, *t; scanf ("%d",&c); t = malloc (c * sizeof(int)); for (i=0; i10) { maxi = 10; mini = t[i] - 10; } else { maxi = t[i]; mini = 0; } com1 = rand() % (maxi - mini + 1) + mini; com2 = t[i] - com1; printf("%d %d\n",com1,com2); } free (t); return 0; } 

Tenga en cuenta que los resultados de malloc() y scanf() no se han verificado: deberían ser.

Parece que estás haciendo un bucle innecesario de veces para la entrada. He eliminado los bucles innecesarios de su código mientras conservo la lógica que utilizó. Cometí un error tonto con mi respuesta anterior.

  #include #include  int main() { int c = 0; int maxi=10; scanf("%d",&c); int t[c]; for(int i=0; i 10) { com1 = 10 com2 = t[i]-com1; } printf("%d %d\n",com1,com2); } return 0; }