Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 39 additions & 1 deletion src/fproblem.php
Original file line number Diff line number Diff line change
Expand Up @@ -492,6 +492,44 @@ function DBGetProblems($contest,$showanyway=false) {
}
return $a;
}

// Recebe o id do contest e da sede, e os tempo atual e de freeze,
// e devolve um array com o numero de submissões e de submissões aceitas para cada problema
// até o momento atual ou até o momento do freeza
function DBGetProblemSubmissionCounts($contest, $site, $t_freeze, $ta) {
$c = DBConnect();

$q = "SELECT r.runproblem AS problem,
count(*) AS cnt,
COUNT(*) FILTER (WHERE a.yes = true) AS cnt_yes
FROM runtable r
JOIN usertable u ON r.usernumber = u.usernumber
JOIN answertable a on r.runanswer = a.answernumber and a.contestnumber= $contest
WHERE u.usertype = 'team'
AND r.contestnumber = $contest
AND u.contestnumber = $contest
AND r.runsitenumber = $site
AND u.usersitenumber = $site
AND (NOT r.runstatus ~ 'deleted')
AND r.rundatediff >= 0 and r.rundatediff <= $t_freeze and r.rundatediffans <= $ta
GROUP BY r.runproblem";

$r = DBExec($c, $q, "DBGetProblemSubmissionCounts");

$subcounts = array();
$accepteds = array();
$nsub = DBnlines($r);

for($si=0; $si<$nsub; $si++) {
$row = DBRow($r,$si);
$subcounts[$row['problem']] = $row['cnt'];
$accepteds[$row['problem']] = $row['cnt_yes'];
}

return array('subcounts' => $subcounts, 'accepteds' => $accepteds);
}


//recebe o numero do contest
//devolve um array, onde cada linha tem os atributos number (numero do problema) e problem (nome do problema)
//para todos os problemas, inclusive os fakes
Expand All @@ -516,4 +554,4 @@ function DBGetAllProblems($contest) {
return $a;
}
// eof
?>
?>
59 changes: 58 additions & 1 deletion src/team/problem.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,34 @@
<tr>
<td><b>Name</b></td>
<td><b>Basename</b></td>
<td><b>Submissions</b></td>
<td><b>Fullname</b></td>
<td><b>Descfile</b></td>
</tr>
<?php
$prob = DBGetProblems($_SESSION["usertable"]["contestnumber"]);
// gather submission counts per problem (only team users, exclude deleted runs)
$subcounts = array();
$accepteds = array();

$contest = $_SESSION["usertable"]["contestnumber"];
$site = $_SESSION["usertable"]["usersitenumber"];

if (($blocal = DBSiteInfo($contest, $_SESSION["usertable"]["usersitenumber"])) == null)
exit;
if (($b = DBSiteInfo($contest, $site, null, false)) == null)
$b = $blocal;
if (($ct = DBContestInfo($contest)) == null)
exit;

$ta = $blocal["currenttime"];
$t_freeze = $b["sitelastmilescore"];

$counts = DBGetProblemSubmissionCounts($contest, $site, $t_freeze, $ta);
$subcounts = $counts['subcounts'];
$accepteds = $counts['accepteds'];


for ($i=0; $i<count($prob); $i++) {
echo " <tr>\n";
// echo " <td nowrap>" . $prob[$i]["number"] . "</td>\n";
Expand All @@ -68,6 +91,40 @@
"src=\"" . balloonurl($prob[$i]["color"]) ."\" />\n";
echo "</td>\n";
echo " <td nowrap>" . $prob[$i]["basefilename"] . "&nbsp;</td>\n";
$count = (isset($subcounts[$prob[$i]['number']]) ? $subcounts[$prob[$i]['number']] : 0);
$count_yes = (isset($accepteds[$prob[$i]['number']]) ? $accepteds[$prob[$i]['number']] : 0);
echo " <td nowrap>" . $count_yes . "/" . $count . "&nbsp;</td>\n";



// $ct=DBGetActiveContest();
// $contest=$ct['contestnumber'];
// $duration=$ct['contestduration'];

// if(!isset($hor)) $hor = -1;
// if($hor>$duration) $hor=$duration;

// $level=$s["sitescorelevel"];
// if($level<=0) $level=-$level;
// else {
// $des=true;
// }



// if (($s = DBSiteInfo($_SESSION["usertable"]["contestnumber"],$_SESSION["usertable"]["usersitenumber"])) == null)
// ForceLoad("index.php");
// $score = DBScore($_SESSION["usertable"]["contestnumber"], $ver, $hor*60, $s["siteglobalscore"]);

// if ($_SESSION["usertable"]["usertype"]!="score" && $_SESSION["usertable"]["usertype"]!="admin" && $level>3) $level=3;

// $minu = 3;
// $rn = DBRecentNews($_SESSION["usertable"]["contestnumber"],
// $_SESSION["usertable"]["usersitenumber"], $ver, $minu);




echo " <td nowrap>" . $prob[$i]["fullname"] . "&nbsp;</td>\n";
if (isset($prob[$i]["descoid"]) && $prob[$i]["descoid"] != null && isset($prob[$i]["descfilename"])) {
echo " <td nowrap><a href=\"../filedownload.php?" . filedownload($prob[$i]["descoid"], $prob[$i]["descfilename"]) .
Expand All @@ -82,4 +139,4 @@

?>
</body>
</html>
</html>