diff --git a/src/fproblem.php b/src/fproblem.php index aa8c6d64..001baed0 100644 --- a/src/fproblem.php +++ b/src/fproblem.php @@ -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 @@ -516,4 +554,4 @@ function DBGetAllProblems($contest) { return $a; } // eof -?> +?> \ No newline at end of file diff --git a/src/team/problem.php b/src/team/problem.php index 6dac4d30..754f6d06 100644 --- a/src/team/problem.php +++ b/src/team/problem.php @@ -54,11 +54,34 @@ Name Basename + Submissions Fullname Descfile \n"; // echo " " . $prob[$i]["number"] . "\n"; @@ -68,6 +91,40 @@ "src=\"" . balloonurl($prob[$i]["color"]) ."\" />\n"; echo "\n"; echo " " . $prob[$i]["basefilename"] . " \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 " " . $count_yes . "/" . $count . " \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 " " . $prob[$i]["fullname"] . " \n"; if (isset($prob[$i]["descoid"]) && $prob[$i]["descoid"] != null && isset($prob[$i]["descfilename"])) { echo " - + \ No newline at end of file