Hola a todos,
Debido a la implementación del nuevo motor y algunos cambios que se han ido incorporando para mejorar funcionalidades asociadas a este, los problemas que cuentan con Juzgado Especial [aquellos que muestran algo parecido a un martillo a la derecha del título] deben ser revisados pues los ficheros de validación de las soluciones pueden ser incompatibles con el motor actual.
En los próximos días estaré revisando cada uno de estos problemas y arreglando los que no funcionen... iré actualizando en este POST los que queden listos, aunque en lo adelante tendré que desactivar algunos problemas temporalmente mientras los arreglo. Al mismo tiempo cuando queden corregidos, rejuzgaré todos los envíos que considere necesario pues pudieran tener veredictos incorrectos (fundamentalmente las submisiones de los últimos meses).
A continuación un listado de los problemas en esta categoría (resaltados los que ya están arreglados):
1503, 2080, 2092, 2093, 2095, 2096, 2097, 2099, 2102, 2103,
2107, 2108, 2109, 2112, 2113, 2161, 2165, 2170, 2172, 2174,
2176, 2294, 2298, 2325, 2328, 2478, 2489, 2490, 2500, 2510,
2518, 2536, 2540, 2599, 2602, 2674, 2760, 2970, 2971,
2972, 2980, 2981, 2985, 2987, 2988, 3043...
Saludos...
Juzgado Especial (Special Judge)
Forum rules
Please, do not reply to an existing thread to report a new bug. Open a new thread instead. Also, please check the existing bug reports before posting a new one.
Please, do not reply to an existing thread to report a new bug. Open a new thread instead. Also, please check the existing bug reports before posting a new one.
- ymondelo20
- Posts: 1968
- Joined: 9 years ago
- Location: Universidad de las Ciencias Informáticas
- Gender:

- Contact:
Juzgado Especial (Special Judge)
"Every problem has a simple, fast and wrong solution" OJ's Main Law. 
- ymondelo20
- Posts: 1968
- Joined: 9 years ago
- Location: Universidad de las Ciencias Informáticas
- Gender:

- Contact:
Re: Juzgado Especial (Special Judge)
El problema 2500 hay que hacer el validador desde cero, así que demorará un poco.
No obstante, si alguien desea ayudar puedo darle algunos ejemplos de como se hace un validador y que lo disfrute jeje.
El 2536 debo revisarlo mejor antes de publicarlo... y los que ya marqué como revisados, si alguien detecta algún error que lo escriba en el post correspondiente o acá.
Siempre puedo facilitar (publicar en este foro o por correo) los códigos de los validadores, y ustedes mismos pueden revisar si tienen algo mal; no es más complicado que resolver el propio problema.
Saludos.
No obstante, si alguien desea ayudar puedo darle algunos ejemplos de como se hace un validador y que lo disfrute jeje.
El 2536 debo revisarlo mejor antes de publicarlo... y los que ya marqué como revisados, si alguien detecta algún error que lo escriba en el post correspondiente o acá.
Siempre puedo facilitar (publicar en este foro o por correo) los códigos de los validadores, y ustedes mismos pueden revisar si tienen algo mal; no es más complicado que resolver el propio problema.
Saludos.
"Every problem has a simple, fast and wrong solution" OJ's Main Law. 
Re: Juzgado Especial (Special Judge)
me gustaría ayudar con eso, aunque no sé cuán complicado pueda ser, si me puedes explicar...
teruel
- ymondelo20
- Posts: 1968
- Joined: 9 years ago
- Location: Universidad de las Ciencias Informáticas
- Gender:

- Contact:
Re: Juzgado Especial (Special Judge)
Hola HaZard:
A continuación mi código de validación, en C++, para el problema 2988.
No tiene aceptados (es de la final mundial) pero resulta un buen ejemplo en este caso.
El código de validación es como cualquier otro código del lenguaje. La diferencia es que lee inicialmente tres ficheros que se le pasan como parámetro al ejecutable luego, está en los comentarios. Toda la validación se hace sobre la información que se recoje de esos ficheros. Y en ocasiones el fichero de salida del servidor no tiene por qué contener toda la solución, sino solo lo que necesita el validador para comprobar.
Siempre que se detecte un veredicto incorrecto de "Wrong Answer" se imprime un mensaje de error con una descripción arbitraria del veredicto, y se debe retornar 201 (en lugar del return 0 acostumbrado). Si fiera Aceptado, el mensaje de error debe ser exactamente "Accepted", y el código de retorno 200. Solo se puede variar la descripción del error en caso del veredicto "Wrong Answer"; los otros si son palabras estrictas.
Por último si se decide validar el formato, y se detecta que es incorrecto, se puede dar un veredicto de Presentation Error.
En ese caso el mensaje de error debe ser exactamente "Presentation Error", y el código de retorno 202.
Eso es todo.
Saludos.
A continuación mi código de validación, en C++, para el problema 2988.
No tiene aceptados (es de la final mundial) pero resulta un buen ejemplo en este caso.
Code: Select all
using namespace std;
#include<algorithm>
#include<stdio.h>
#include<math.h>
char cad[1001];
int n, d, posx[105], posy[105];
int s, cs, arr[105];
int GetDIST(int p, int q)
{
return (posx[p]-posx[q])*(posx[p]-posx[q]) + (posy[p]-posy[q])*(posy[p]-posy[q]);
}
bool FinalCheck()
{
for(int p = 1; p <= s; p++)
for(int q = p + 1; q <= s; q++)
if(GetDIST(p, q) > d) return false;
return true;
}
int main(int argc, char *argv[])
{
FILE *in=fopen(argv[1],"r"); //Leyendo entrada del servidor...
FILE *out=fopen(argv[2],"r"); //Leyendo la salida del usuario...
FILE *cout=fopen(argv[3],"r"); //Leyendo la salida correcta del servidor...
fscanf(in,"%d%d",&n,&d); d = d*d; // d ^ 2
for(int p = 1; p <= n; p++) fscanf(in,"%d%d",&posx[p],&posy[p]); // initial positions
fscanf(cout,"%d",&cs);
if(1 != fscanf(out,"%d",&s))
{ fprintf(stderr,"Input Missing"); return 201; } //No hay nada que leer...
if(cs != s) { fprintf(stderr,"Wrong Answer"); return 201; } //Invalid Solution
for(int p = 1; p <= s; p++)
if(1 != fscanf(out,"%d",&arr[p]))
{ fprintf(stderr,"Input Missing"); return 201; } //No hay nada que leer...
if(1 == fscanf(out,"%s",&cad))
{ fprintf(stderr,"Trash in Output"); return 201; } //Basura restante en la salida...
if(!FinalCheck()) { fprintf(stderr,"Wrong Answer"); return 201; } //Wrong Selection
fprintf(stderr,"Accepted"); //Todo OK...
return 200;
}
Siempre que se detecte un veredicto incorrecto de "Wrong Answer" se imprime un mensaje de error con una descripción arbitraria del veredicto, y se debe retornar 201 (en lugar del return 0 acostumbrado). Si fiera Aceptado, el mensaje de error debe ser exactamente "Accepted", y el código de retorno 200. Solo se puede variar la descripción del error en caso del veredicto "Wrong Answer"; los otros si son palabras estrictas.
Por último si se decide validar el formato, y se detecta que es incorrecto, se puede dar un veredicto de Presentation Error.
En ese caso el mensaje de error debe ser exactamente "Presentation Error", y el código de retorno 202.
Eso es todo.
Saludos.
"Every problem has a simple, fast and wrong solution" OJ's Main Law. 
Re: Juzgado Especial (Special Judge)
estoy viendo como hacer un validador para el ejercicio 1503, que debe ser bastante fácil, en los demás no sé porque están deshabilitados y no los puedo ver, de todas formas a donde mando el validador?
teruel
Re: Juzgado Especial (Special Judge)
me quedó así, no sé cómo comprobar si está bien o está mal así que lo dejo aquí:
Code: Select all
#include <bits/stdc++.h>
using namespace std;
#define abs(a) ((a) < 0 ? -(a) : (a))
const double eps = 1e-2;
int main(int argc, char *argv[]) {
FILE *in = fopen(argv[1], "r"); //Leyendo entrada del servidor...
FILE *out = fopen(argv[2], "r"); //Leyendo la salida del usuario...
FILE *good = fopen(argv[3], "r"); //Leyendo la salida correcta del servidor...
int n;
double sol, server_sol;
fscanf(in, "%d", &n);
for(int p = 1; p <= n; p++) {
fscanf(good, "%lf", &server_sol);
if(fscanf(out, "%lf", &sol) == EOF) {
fprintf(stderr, "Input Missing"); //No hay nada que leer...
return 201;
}
if(abs(sol - server_sol) > eps) {
fprintf(stderr, "Wrong Answer"); //Invalid Solution
return 201;
}
}
char cad[100001];
if(1 == fscanf(out, "%s", &cad)) {
fprintf(stderr, "Trash in Output"); //Basura restante en la salida...
return 201;
}
fprintf(stderr, "Accepted"); //Todo OK...
return 200;
}
teruel
