|
|
|
<% this.title = '上传测试数据'; %>
|
|
|
|
<% include header %>
|
|
|
|
<%
|
|
|
|
let subtaskType = {
|
|
|
|
sum: '测试点分数按百分比相加',
|
|
|
|
min: '取各测试点最低分',
|
|
|
|
mul: '测试点分数按百分比相乘'
|
|
|
|
};
|
|
|
|
%>
|
|
|
|
<div class="padding">
|
|
|
|
<div class="ui grid">
|
|
|
|
<div class="row">
|
|
|
|
<div class="seven wide column">
|
|
|
|
<% if (problem.testdata) { %>
|
|
|
|
<%
|
|
|
|
try {
|
|
|
|
let list = syzoj.utils.parseTestData(problem.testdata.getPath());
|
|
|
|
%>
|
|
|
|
<% if (list.spj) { %>
|
|
|
|
<p>评测方式:Special Judge</p>
|
|
|
|
<% } else { %>
|
|
|
|
<p>评测方式:文本比较</p>
|
|
|
|
<% } %>
|
|
|
|
<table class="ui celled table">
|
|
|
|
<tbody>
|
|
|
|
<% let i = 0; %>
|
|
|
|
<% for (let subtask of list) { %>
|
|
|
|
<% if (list.length !== 1) { %>
|
|
|
|
<tr>
|
|
|
|
<td style="background-color: #F9FAFB" colspan="2"><h4 style="margin-bottom: 3px; ">子任务 <%= ++i %></h4><span style="font-weight: normal; "><%= subtaskType[subtask.type] %>,总分值 <%= subtask.score %></span></th>
|
|
|
|
</tr>
|
|
|
|
<% } else { %>
|
|
|
|
<tr>
|
|
|
|
<td style="background-color: #F9FAFB" colspan="2"><h4 style="margin-bottom: 3px; ">单个子任务</h4><span style="font-weight: normal; "><%= subtaskType[subtask.type] %></span></th>
|
|
|
|
</tr>
|
|
|
|
<% } %>
|
|
|
|
<% for (let testcase of subtask.cases) { %>
|
|
|
|
<tr>
|
|
|
|
<td><%= testcase.input %></td>
|
|
|
|
<td><%= testcase.output %></td>
|
|
|
|
</tr>
|
|
|
|
<% } %>
|
|
|
|
<% } %>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
<% } catch (e) { %>
|
|
|
|
<h3>数据包错误:<%= e %></h3>
|
|
|
|
<% } %>
|
|
|
|
<% } else { %>
|
|
|
|
<h3>数据未上传</h3>
|
|
|
|
<% } %>
|
|
|
|
</div>
|
|
|
|
<div class="nine wide column">
|
|
|
|
<form class="ui form" method="post" enctype="multipart/form-data">
|
|
|
|
<div class="two fields">
|
|
|
|
<div class="field">
|
|
|
|
<label for="doc-ds-ipt-1">时间限制(单位: ms)</label>
|
|
|
|
<input type="number" name="time_limit" value="<%= problem.time_limit %>">
|
|
|
|
</div>
|
|
|
|
<div class="field">
|
|
|
|
<label for="doc-ds-ipt-1">内存限制(单位: MiB)</label>
|
|
|
|
<input type="number" name="memory_limit" value="<%= problem.memory_limit %>">
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<% if (!problem.file_io) { %>
|
|
|
|
<div class="inline fields">
|
|
|
|
<label>IO 方式</label>
|
|
|
|
<div class="field">
|
|
|
|
<div class="ui radio checkbox">
|
|
|
|
<input name="io_method" value="std-io" id="std-io" type="radio" onclick="goDisable()" checked>
|
|
|
|
<label for="std-io">标准 IO</label>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="field">
|
|
|
|
<div class="ui radio checkbox">
|
|
|
|
<input name="io_method" value="file-io" id="file-io" type="radio" onclick="goEnable()">
|
|
|
|
<label for="file-io">文件 IO</label>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="two fields">
|
|
|
|
<div class="field">
|
|
|
|
<label for="file_io_input_name">输入文件名</label>
|
|
|
|
<input type="text" id="file-io-input-name" name="file_io_input_name" value="<%= problem.file_io_input_name %>" disabled>
|
|
|
|
</div>
|
|
|
|
<div class="field">
|
|
|
|
<label for="file_io_output_name">输出文件名</label>
|
|
|
|
<input type="text" id="file-io-output-name" name="file_io_output_name" value="<%= problem.file_io_output_name %>" disabled>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<% } else { %>
|
|
|
|
<div class="inline fields">
|
|
|
|
<label>IO 方式</label>
|
|
|
|
<div class="field">
|
|
|
|
<div class="ui radio checkbox">
|
|
|
|
<input name="io_method" value="std-io" id="std-io" type="radio" onclick="goDisable()">
|
|
|
|
<label for="std-io">标准 IO</label>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="field">
|
|
|
|
<div class="ui radio checkbox">
|
|
|
|
<input name="io_method" value="file-io" id="file-io" type="radio" onclick="goEnable()" checked>
|
|
|
|
<label for="file-io">文件 IO</label>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="two fields">
|
|
|
|
<div class="field">
|
|
|
|
<label for="file_io_input_name">输入文件名</label>
|
|
|
|
<input type="text" id="file-io-input-name" name="file_io_input_name" value="<%= problem.file_io_input_name %>">
|
|
|
|
</div>
|
|
|
|
<div class="field">
|
|
|
|
<label for="file_io_output_name">输出文件名</label>
|
|
|
|
<input type="text" id="file-io-output-name" name="file_io_output_name" value="<%= problem.file_io_output_name %>">
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<% } %>
|
|
|
|
<div class="field">
|
|
|
|
<label for="testdata"><% if (!problem.testdata_id) { %>上传测试数据<% } else { %>更新测试数据<% } %></label>
|
|
|
|
<input type="file" id="testdata" name="testdata">
|
|
|
|
</div>
|
|
|
|
<button type="submit" class="ui button">提交</button>
|
|
|
|
<a href="<%= syzoj.utils.makeUrl(['problem', problem.id]) %>" class="ui blue button">返回题目</a>
|
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<script>
|
|
|
|
function goEnable() {
|
|
|
|
document.getElementById('file-io-input-name').disabled = false;
|
|
|
|
document.getElementById('file-io-output-name').disabled = false;
|
|
|
|
}
|
|
|
|
function goDisable() {
|
|
|
|
document.getElementById('file-io-input-name').disabled = true;
|
|
|
|
document.getElementById('file-io-output-name').disabled = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
$(document).ready(function () {
|
|
|
|
$('#file-io-input-name').on('input keyup change', function (e) {
|
|
|
|
var prob = $('#file-io-input-name').val();
|
|
|
|
if (prob.lastIndexOf('.') !== -1) prob = prob.substring(0, prob.lastIndexOf('.'));
|
|
|
|
$('#file-io-output-name').attr('placeholder', prob + '.out');
|
|
|
|
});
|
|
|
|
$('#file-io-output-name').focus(function (e) {
|
|
|
|
if (!$('#file-io-output-name').val()) {
|
|
|
|
$('#file-io-output-name').val($('#file-io-output-name').attr('placeholder'));
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
</script>
|
|
|
|
<% include footer %>
|