. //////////////////////////////////////////////////////////////////////////////// // Last modified 08/aug/2015 by cassio@ime.usp.br if (!isset($_POST["confirmation"]) || $_POST["confirmation"] != "confirm") unset($_POST['noflush']); require('header.php'); if(($ct = DBContestInfo($_SESSION["usertable"]["contestnumber"])) == null) ForceLoad("../index.php"); if (isset($_GET["delete"]) && is_numeric($_GET["delete"]) && isset($_GET["input"])) { $param = array(); $param['number']=$_GET["delete"]; $param['inputfilename']=$_GET["input"]; if(!DBDeleteProblem ($_SESSION["usertable"]["contestnumber"], $param)) { MSGError('Error deleting problem'); LogError('Error deleting problem'); } ForceLoad("problem.php"); } if(isset($_POST['Submit5']) && $_POST['Submit5']=='Build') ForceLoad("buildproblem.php"); if(isset($_POST['Submit5']) && $_POST['Submit5']=='Send') { if(isset($_POST['basename']) && isset($_POST['fullname']) && isset($_POST['timelimit']) && $_POST["confirmation"] == "confirm") { if ($_FILES["probleminput"]["name"] != "") { $type=myhtmlspecialchars($_FILES["probleminput"]["type"]); $size=myhtmlspecialchars($_FILES["probleminput"]["size"]); $name=myhtmlspecialchars($_FILES["probleminput"]["name"]); $temp=myhtmlspecialchars($_FILES["probleminput"]["tmp_name"]); if (!is_uploaded_file($temp)) { ob_end_flush(); IntrusionNotify("file upload problem."); ForceLoad("../index.php"); } } else $name = ""; if ($_FILES["problemsol"]["name"] != "") { $type1=myhtmlspecialchars($_FILES["problemsol"]["type"]); $size1=myhtmlspecialchars($_FILES["problemsol"]["size"]); $name1=myhtmlspecialchars($_FILES["problemsol"]["name"]); $temp1=myhtmlspecialchars($_FILES["problemsol"]["tmp_name"]); if (!is_uploaded_file($temp1)) { ob_end_flush(); IntrusionNotify("file upload problem."); ForceLoad("../index.php"); } } else $name1 = ""; if (isset($_FILES["problemdesc"]) && $_FILES["problemdesc"]["name"] != "") { $type2=myhtmlspecialchars($_FILES["problemdesc"]["type"]); $size2=myhtmlspecialchars($_FILES["problemdesc"]["size"]); $name2=myhtmlspecialchars($_FILES["problemdesc"]["name"]); $temp2=myhtmlspecialchars($_FILES["problemdesc"]["tmp_name"]); if (!is_uploaded_file($temp2)) { ob_end_flush(); IntrusionNotify("file upload problem."); ForceLoad("../index.php"); } } else $name2 = ""; $ds = DIRECTORY_SEPARATOR; if($ds=="") $ds = "/"; $tmpdir = getenv("TMP"); if($tmpdir=="") $tmpdir = getenv("TMPDIR"); if($tmpdir[0] != $ds) $tmdir = $ds . "tmp"; if($tmpdir=="") $tmpdir = $ds . "tmp"; $locr = $_SESSION["locr"]; $tfile = tempnam($tmpdir, "problem"); if(@mkdir($tfile . "_d", 0700)) { $dir = $tfile . "_d"; @mkdir($dir . $ds . 'limits'); @mkdir($dir . $ds . 'compare'); @mkdir($dir . $ds . 'compile'); @mkdir($dir . $ds . 'run'); @mkdir($dir . $ds . 'input'); @mkdir($dir . $ds . 'output'); @mkdir($dir . $ds . 'tests'); @mkdir($dir . $ds . 'description'); $filea = array('compare' . $ds . 'c','compare' . $ds . 'cpp','compare' . $ds . 'java', 'compile' . $ds . 'c','compile' . $ds . 'cpp','compile' . $ds . 'java', 'run' . $ds . 'c','run' . $ds . 'cpp','run' . $ds . 'java'); foreach($filea as $file) { $rfile=$locr . $ds . '..' . $ds . 'doc' . $ds . 'problemexamples' . $ds . 'problemtemplate' . $ds . $file; if(is_readable($rfile)) { @copy($rfile, $dir . $ds . $file); } else { @unlink($tfile); cleardir($dir); ob_end_flush(); MSGError('Could not read problem template file ' . $rfile); ForceLoad('problem.php'); } } $tl = explode(',',$_POST['timelimit']); if(!isset($tl[1]) || !is_numeric(trim($tl[1]))) $tl[1]='1'; $str = "echo " . trim($tl[0]) . "\necho " . trim($tl[1]) . "\necho 512\necho " . floor(10 + $size1 / 512) . "\nexit 0\n"; file_put_contents($dir . $ds . 'limits' . $ds . 'c',$str); file_put_contents($dir . $ds . 'limits' . $ds . 'cpp',$str); file_put_contents($dir . $ds . 'limits' . $ds . 'java',$str); $str = "basename=" . trim($_POST['basename']) . "\nfullname=" . trim($_POST['fullname']); if($name2) { @copy($temp2, $dir . $ds . 'description' . $ds . $name2); @unlink($temp2); $str .= "\ndescfile=" . $name2; } $str .= "\n"; file_put_contents($dir . $ds . 'description' . $ds . 'problem.info',$str); if($name && $name1) { @copy($temp, $dir . $ds . 'input' . $ds . 'file1'); @unlink($temp); @copy($temp1, $dir . $ds . 'output' . $ds . 'file1'); @unlink($temp1); } else { @unlink($tfile); cleardir($dir); ob_end_flush(); MSGError('Could not read problem input/output files'); ForceLoad('problem.php'); } $ret=create_zip($dir, glob($dir . $ds . '*'),$dir . '.zip'); cleardir($dir); if($ret <= 0) { @unlink($tfile); @unlink($dir . '.zip'); ob_end_flush(); MSGError('Could not write to zip file'); ForceLoad('problem.php'); } $str = file_get_contents($dir . '.zip'); @unlink($dir . '.zip'); @unlink($tfile); header ("Expires: " . gmdate("D, d M Y H:i:s") . " GMT"); header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header ("Cache-Control: no-cache, must-revalidate"); header ("Pragma: no-cache"); header ("Content-transfer-encoding: binary\n"); header ("Content-type: application/force-download"); header ("Content-Disposition: attachment; filename=" . basename($dir . '.zip')); ob_end_flush(); echo $str; exit; } else { @unlink($tfile); ob_end_flush(); MSGError('Could not write to temporary directory'); } } ForceLoad('problem.php'); } if (isset($_POST["Submit3"]) && isset($_POST["problemnumber"]) && is_numeric($_POST["problemnumber"]) && isset($_POST["problemname"]) && $_POST["problemname"] != "") { if(strpos(trim($_POST["problemname"]),' ')!==false) { $_POST["confirmation"]=''; MSGError('Problem short name cannot have spaces'); } else { if ($_POST["confirmation"] == "confirm") { if ($_FILES["probleminput"]["name"] != "") { $type=myhtmlspecialchars($_FILES["probleminput"]["type"]); $size=myhtmlspecialchars($_FILES["probleminput"]["size"]); $name=myhtmlspecialchars($_FILES["probleminput"]["name"]); $temp=myhtmlspecialchars($_FILES["probleminput"]["tmp_name"]); if (!is_uploaded_file($temp)) { IntrusionNotify("file upload problem."); ForceLoad("../index.php"); } } else $name = ""; $param = array(); $param['number'] = $_POST["problemnumber"]; $param['name'] = trim($_POST["problemname"]); $param['inputfilename'] = $name; $param['inputfilepath'] = $temp; $param['fake'] = 'f'; $param['colorname'] = trim($_POST["colorname"]); $param['color'] = trim($_POST["color"]); DBNewProblem ($_SESSION["usertable"]["contestnumber"], $param); } } ForceLoad("problem.php"); } $prob = DBGetFullProblemData($_SESSION["usertable"]["contestnumber"],true); for ($i=0; $i
\n"; if($prob[$i]["fake"]!='t') { if(strpos($prob[$i]["fullname"],"(DEL)") !== false) { echo " \n"; echo " \n"; } else { echo " \n"; echo " \n"; } echo " \n"; echo " \n"; if (isset($prob[$i]["descoid"]) && $prob[$i]["descoid"] != null && isset($prob[$i]["descfilename"])) { echo " \n"; } else echo " \n"; if ($prob[$i]["inputoid"] != null) { $tx = $prob[$i]["inputhash"]; echo " \n"; } else echo " \n"; /* if ($prob[$i]["soloid"] != null) { $tx = $prob[$i]["solhash"]; echo " \n"; } else echo " \n"; if ($prob[$i]["timelimit"]!="") echo " \n"; else echo " \n"; */ echo " \n"; echo " \n"; } echo "
Problem # Short Name Fullname Basename Descfile Package file Color
" . $prob[$i]["number"]; echo "(deleted)"; } else { echo " " . $prob[$i]["number"]; } echo ""; echo ""; echo "" . $prob[$i]["number"] . " (fake)" . $prob[$i]["name"] . "" . $prob[$i]["fullname"] . " " . $prob[$i]["basefilename"] . " " . basename($prob[$i]["descfilename"]) . " " . $prob[$i]["inputfilename"] . " " . "\"$tx\"" . " " . $prob[$i]["solfilename"] . " ". "\"$tx\"" . " " . $prob[$i]["timelimit"] . " "; if($prob[$i]["fake"]!='t') { if ($prob[$i]["color"]!="") { echo "\"".$prob[$i]["colorname"]."\"\n"; } echo ""; echo ""; echo ""; } else echo " "; echo "
"; if (count($prob) == 0) echo "
NO PROBLEMS DEFINED
"; ?>

Clicking on a problem number will delete it.
WARNING: deleting a problem will remove EVERYTHING related to it.
It is NOT recommended to change anything while the contest is running.
To import a problem, fill in the following fields.
To replace the data of a problem, proceed as if it did not exist (data will be replaced without removing it).
Number:
Short Name (usually a letter, no spaces):
Problem package (ZIP):
Color name:
Color (RGB HTML format):



To build a problem package from files, use this link: