GOLANG => 'go',
GOLFSCRIPT => 'gs',
HASKELL => 'hs',
+ OBERON => 'm',
MONO => 'cs',
JAVA => 'java',
PASCAL => 'pas',
},
sub (/st/:contest) {
- my @pb = map { [$_->{id}, $_->{name}] } @{problem_list contest => $_{contest}};
+ my @pb = map { [$_->{id}, $_->{name}] } sort { $a->{value} <=> $b->{value} } @{problem_list contest => $_{contest}};
response st => 'Standings', {problems => \@pb, st => standings $_{contest}}, 10
},
sub (/log/ + ?:contest~&:owner~&:page~&:problem~&:private~&:result~) {
forbid $_{private};
my ($jobs, $pageinfo) = job_list(%_);
- response log => 'Job list', {log => $jobs, %$pageinfo}, 5
+ response log => 'Job log', {log => $jobs, %$pageinfo}, 5
},
sub (/pb/ + ?:owner~&:contest~&:private~) {
forbid $_{private};
return reply 'This contest has finished' if $contest->{finished};
return reply 'This problem is private' if !admin && $private;
return reply 'This problem does not belong to this contest' unless contest_has_problem $_{contest}, $_{problem};
+ if ($_{contest} =~ /d[12]$/) {
+ my $other = $_{contest} =~ y/12/21/r;
+ my ($ans) = db->query('SELECT COUNT(*) FROM jobs WHERE owner = ? AND contest = ?', remote_user->{id}, $other)->flat;
+ return reply 'You are not allowed to participate in both divisions of a round' if $ans;
+ }
}
return reply 'Maximum source size is 10KB' if ($prog ? $prog->size : length $_{source_code}) > 10 * 1024;
return reply 'You must wait 30 seconds between jobs' if !admin && time <= remote_user->{lastjob} + 30;