Подсчет количества баллов

Обсуждение вопросов, связанных с системой проведения турниров ejudge.
Post Reply
hotsnr
Posts:67
Joined:19 October 2012, 22:14
Подсчет количества баллов

Post by hotsnr » 26 October 2012, 22:08

Допустим каждый тест имеет разную стоимость в баллах.
Можно ли как то оценивать чекером каждый тест в процентном отношении от стоимости(например, 50%) при условии целочисленного результата?

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Подсчет количества баллов

Post by cher » 26 October 2012, 23:33

Вопрос непонятен.

hotsnr
Posts:67
Joined:19 October 2012, 22:14

Re: Подсчет количества баллов

Post by hotsnr » 26 October 2012, 23:50

Например:
У меня есть задача с 5 тестами с такими баллами за каждый тест
2 4 6 8 10

Решение участника может получить на каждом тесте или полный балл за тест или половину баллов за тест
Например:
В тестах 1,3,5 решение участника решило задачу на 50%, а остальные - на полный балл (100%), тогда сумма баллов решения:
2*(50/100) + 4*(100/100) + 6*(50/100) + 8*(100/100) + 10*(50/100) = 21


hotsnr
Posts:67
Joined:19 October 2012, 22:14

Re: Подсчет количества баллов

Post by hotsnr » 27 October 2012, 23:52

Я хотел решил проблему сочетанием чекера и оценивающей программы, но странный вещи происходят:
На всех тестах результат у чекера был 1 балл (с вердиктом WA)
Я в оценивающей программе всегда вывожу полный балл независимо от результата проверки.
Но все равно результат 0.
Может я что то делаю не так?

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Подсчет количества баллов

Post by cher » 28 October 2012, 22:12

Опишите ситуацию подробнее.

hotsnr
Posts:67
Joined:19 October 2012, 22:14

Re: Подсчет количества баллов

Post by hotsnr » 28 October 2012, 22:56

Не уверен что это проблема, возможно я не так прочитал документацию.
Задача состоит из вывода количества чисел и самих чисел.
Если в каком то тесте верно количество, но не верны сами числа (или их нет), то решение участника должно получать за него 50% баллов за тест.

В настройках отмечен параметр scoring_checker.
Чекер убогий, но работает:

Code: Select all

#define EJUDGE
#include "testlib.h"

int main(int argc, char * argv[])
{
	setName("Checker for Problem Formula 7");
	registerTestlibCmd(argc, argv);

	int ja=ans.readInt(), jp=ouf.readInt();

	if (ja!=jp){
		printf ("0\n");
		return 1;
	}

	if (ouf.seekEof()){
		printf ("1\n");
		return 1;
	}

	for (int N=ja;N--;)
	{
		ja=ans.readInt(), jp=ouf.readInt();
		if (ja!=jp){
			printf ("1\n");
			return 1;
		}
	}

	printf ("2\n");
	return 0;
}
Если решение участника полностью не верное - 0 баллов,частично - 1 балл, полное - 2 балла.
Не менее убогая оценивающая программа:

Code: Select all

#include <iostream>

using namespace std;

int get_score (int test){
	if (test<=2) return 1;
	if (test<=42) return 2;
	return 3;
}

int main (){
	int n, i;
	int s = 0;
	int st, score, time;
/*	cin>>n;
	for (i = 1; i<=n; i++){
		cin>>st>>score>>time;
		if (st == 0)  s += get_score(i)*2;
		if (st == 1)  s += get_score(i)*score;
	}
	cout<<s/2<<endl;*/
	cout<<100<<endl;
	return 0;
}
Так вот самое интересное в том (а может и нормальное), что в таком варианте оцен. программа всегда выводит полный балл и все равно балл за задачу 0.
Я правильно понимаю, что если при установленном параметре scoring_checker при вердикте WA балл дает чекер, а не выставляется 0?

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Подсчет количества баллов

Post by cher » 30 October 2012, 08:09

Каждый тест правильно оценивается?

Если задача оценивается 0, 1 или 2, то почему выводится 100?

Какие параметры у задачи установлены? Приведите фрагмент serve.cfg.

hotsnr
Posts:67
Joined:19 October 2012, 22:14

Re: Подсчет количества баллов

Post by hotsnr » 30 October 2012, 23:48

Извините за беспокойство, не доглядел. Удалите пожалуйста тему.

Post Reply