- for (1 .. jobcard) {
- next unless defined job_user && defined job_problem && defined job_result;
- next if $Gruntmaster::Data::contest && job_date() < $start;
-
- if ($Gruntmaster::Data::contest) {
- $scores{job_user()}{job_problem()} = job_result() ? 0 : calc_score (job_user(), job_problem(), job_date(), $tries{job_user()}{job_problem()}, $totaltime);
- $tries{job_user()}{job_problem()}++;
+ for my $job (db($env)->jobs->search({contest => $ct->id})) {
+
+ if ($ct) {
+ my $time = $job->date - $ct->start;
+ next if $time < 0;
+ my $value = $job->problem->value // LEVEL_VALUES->{$job->problem->level};
+ $scores{$job->owner->id}{$job->problem->id} = $job->result ? 0 : calc_score ($value, $time, $tries{$job->owner}{$job->problem}, $ct->stop - $ct->start);
+ $tries{$job->owner->id}{$job->problem->id}++;