{% extends "common-content.html" %} {% block content_media %} {% include "comments/media-css.html" %} <style> .title-state { font-size: 2em; float: left; width: 1.1em; display: block; margin-top: 0.16em; } .info-float a { vertical-align: middle; } .clarifications-area h2 { margin-bottom: 20px; } .problem-clarification .body { display: inline-block; padding-left: 3em; } #content-right { max-width: 12.5em; min-width: 12.5em; } #problem-types, #allowed-langs, #available-judges { padding-top: 1em; } .problem-info-entry { padding-top: 0.5em; } #raw_problem { visibility: hidden; width: 0; height: 0; } #comment-section { display: none; } </style> {% endblock %} {% block content_js_media %} {% include "comments/media-js.html" %} {% include "actionbar/media-js.html" %} {% if request.in_contest_mode %} <script type="text/javascript"> window.register_contest_notification("{{url('contest_clarification_ajax', request.participation.contest.key)}}"); </script> {% endif %} <script type="text/javascript"> $(function() { $('#pdf_button').click(async function(e) { e.preventDefault(); if (!$('#raw_problem').attr('src')) { $('#raw_problem').attr('src', '{{problem.code}}/raw') } while(!$('.math-loaded', frames['raw_problem'].document).length){ await new Promise(r => setTimeout(r, 200)); } frames['raw_problem'].print(); }); $('#clarification_header').on('click', function() { $('#clarification_header_container').hide(); window.scrollTo(0, document.body.scrollHeight); }) if (window.location.href.includes('#comment')) { $('#comment-section').show(); } {% if not available_judges %} $('#judge-toggle').click(); {% endif %} }); </script> {% endblock %} {% block title_row %} <div class="problem-title"> {% if request.user.is_authenticated %} {% if problem.id in completed_problem_ids %} <a href="{{ url('user_submissions', problem.code, request.user.username) }}"> {% if problem.is_public or request.in_contest_mode %} <i class="solved-problem-color title-state fa fa-check-circle"></i> {% else %} <i class="solved-problem-color title-state fa fa-lock"></i> {% endif %} </a> {% elif problem.id in attempted_problems %} <a href="{{ url('user_submissions', problem.code, request.user.username) }}"> {% if problem.is_public or request.in_contest_mode %} <i class="attempted-problem-color title-state fa fa-minus-circle"></i> {% else %} <i class="attempted-problem-color title-state fa fa-lock"></i> {% endif %} </a> {% endif %} {% endif %} <h2 class="title-row" style="display: inline-block">{{ title }}</h2> {% if problem.is_organization_private %} <span class="organization-tags"> {% for org in problem.organizations.all() %} <span class="organization-tag"> <a href="{{ org.get_absolute_url() }}"> <i class="fa fa-lock"></i> {{ org.name }} </a> </span> {% endfor %} </span> {% endif %} <span class="spacer"></span> {% if has_render %} <a href="{{ url('problem_pdf', problem.code) }}" class="view-pdf" target="_blank"> {% elif problem.pdf_description %} <a href="{{ url('problem_pdf_description', problem.code) }}" class="view-pdf" target="_blank"> {% else %} <a id="pdf_button" class="view-pdf" href='#'> {% endif %} <span class="pdf-icon"> <span class="fa fa-file-pdf-o pdf-icon-logo"></span> <span class="pdf-icon-bar"></span> </span> {{ _('View as PDF') }} </a> </div> {% endblock %} {% block info_float %} {% if request.user.is_authenticated and request.in_contest_mode and submission_limit %} {% if submissions_left > 0 %} <a href="{{ url('problem_submit', problem.code) }}" class="unselectable button full btn-green small"> {{ _('Submit solution') }} </a> <div class="submissions-left"> {% trans trimmed counter=submissions_left %} {{ counter }} submission left {% pluralize %} {{ counter }} submissions left {% endtrans %} </div> {% else %} <a class="unselectable button full disabled small">{{ _('Submit solution') }}</a> <div class="no-submissions-left submissions-left">{{ _('0 submissions left') }}</div> {% endif %} {% else %} <a href="{{ url('problem_submit', problem.code) }}" class="unselectable button full btn-green small"> {{ _('Submit solution') }} </a> {% endif %} <hr style="padding-bottom: 0.3em"> {% if request.user.is_authenticated and has_submissions %} <div> <a href="{{ url('user_submissions', problem.code, request.user.username) }}">{{ _('My submissions') }}</a> </div> {% endif %} <div><a href="{{ url('chronological_submissions', problem.code) }}">{{ _('All submissions') }}</a></div> <div><a href="{{ url('ranked_submissions', problem.code) }}">{{ _('Best submissions') }}</a></div> {% if editorial and editorial.is_public and not (request.user.is_authenticated and request.in_contest_mode) %} <hr> <div><a href="{{ url('problem_editorial', problem.code) }}">{{ _('Read editorial') }}</a></div> {% endif %} {% if can_edit_problem %} <hr> <div> <a href="{{ url('problem_ticket_list', problem.code) }}">{{ _('Manage tickets') }} {% if num_open_tickets %}<span class="badge">{{ num_open_tickets }}</span>{% endif %} </a> </div> <div><a href="{{ url('admin:judge_problem_change', problem.id) }}">{{ _('Edit problem') }}</a></div> {% if not problem.is_manually_managed %} <div><a href="{{ url('problem_data', problem.code) }}">{{ _('Edit test data') }}</a></div> {% endif %} {% elif request.user.is_authenticated and has_tickets %} <hr> <div> <a href="{{ url('problem_ticket_list', problem.code) }}">{{ _('My tickets') }} {% if num_open_tickets %}<span class="badge">{{ num_open_tickets }}</span>{% endif %} </a> </div> {% endif %} {% if problem.is_subs_manageable_by(request.user) %} <div> <a href="{{ url('problem_manage_submissions', problem.code) }}">{{ _('Manage submissions') }}</a> </div> {% endif %} {% if perms.judge.clone_problem %} <div> <a href="{{ url('problem_clone', problem.code) }}">{{ _('Clone problem') }}</a> </div> {% endif %} <hr style="padding-top: 0.3em"> <div class="problem-info-entry"> <i class="fa fa-check fa-fw"></i><span class="pi-name">{{ _('Points:') }}</span> <span class="pi-value"> {% if contest_problem %} {{ contest_problem.points }}{% if contest_problem.partial %} {{ _('(partial)') }}{% endif %} {% else %} {{ problem.points|floatformat }}{% if problem.partial %} {{ _('(partial)') }}{% endif %} {% endif %} </span> </div> <div class="problem-info-entry"> <i class="fa fa-clock-o fa-fw"></i><span class="pi-name">{{ _('Time limit:') }}</span> <span class="pi-value">{{ problem.time_limit }}s</span> </div> <div class="problem-lang-limits"> {% for name, limit in problem.language_time_limit %} <div class="lang-limit"> <span class="lang-name">{{ name }}</span> <span class="lang-tl">{{ limit }}s</span> </div> {% endfor %} </div> <div class="problem-info-entry"> <i class="fa fa-server fa-fw"></i><span class="pi-name">{{ _('Memory limit:') }}</span> <span class="pi-value">{{ problem.memory_limit|kbsimpleformat }}</span> </div> <div class="problem-lang-limits"> {% for name, limit in problem.language_memory_limit %} <div class="lang-limit"> <span class="lang-name">{{ name }}</span> <span class="lang-ml">{{ limit|kbsimpleformat }}</span> </div> {% endfor %} </div> <div class="problem-info-entry"> <i class="fa fa-file-o fa-fw"></i><span class="pi-name">{{ _('Input:') }}</span> <span class="pi-value"> {{ fileio_input or _('stdin') }} </span> </div> <div class="problem-info-entry"> <i class="fa fa-file fa-fw"></i><span class="pi-name">{{ _('Output:') }}</span> <span class="pi-value">{{ fileio_output or _('stdout') }}</span> </div> <hr style="padding-top: 0.7em"> {% cache 86400 'problem_authors' problem.id LANGUAGE_CODE %} {% with authors=problem.authors.all() %} {% if authors %} <div class="problem-info-entry"> <i class="fa fa-pencil-square-o fa-fw"></i><span class="pi-name">{% trans trimmed count=authors|length %} Author: {% pluralize count %} Authors: {% endtrans %}</span> <div class="pi-value authors-value">{{ link_users(authors) }}</div> </div> {% endif %} {% endwith %} {% endcache %} {% if not contest_problem or not contest_problem.contest.hide_problem_tags %} <div id="problem-types"> {% with types=problem.types_list %} <div class="toggle closed unselectable"> <i class="fa fa-chevron-right fa-fw"></i>{% trans trimmed count=problem.types_list|length %} Problem type {% pluralize count %} Problem types {% endtrans %} </div> <div style="display:none" class="toggled">{{ problem.types_list|join(", ") }}</div> {% endwith %} </div> {% endif %} {% if show_languages %} <div id="allowed-langs"> <div class="toggle open unselectable"> <i class="fa fa-chevron-right fa-fw"></i>{{ _('Allowed languages') }} </div> <div class="toggled"> {% with usable=problem.usable_common_names, langs=problem.languages_list() %} {% for lang in langs %} {%- if lang in usable -%} {{ lang }} {%- else -%} <s title="{{ _('No %(lang)s judge online', lang=lang) }}">{{ lang }}</s> {%- endif -%} {% if not loop.last %}, {% endif -%} {% endfor %} {% endwith %} </div> </div> {% endif %} {% if problem.is_editable_by(request.user) %} <div id="available-judges"> <div class="toggle closed" id="judge-toggle"> <i class="fa fa-chevron-right fa-fw"></i><span class="pi-name">{% trans trimmed count=available_judges|length %} Judge {% pluralize count %} Judges {% endtrans %} </span> </div> <div class="pi-value judges-value toggled" style="display: none;"> {% if available_judges %} {% if perms.judge.change_judge %} {% for judge in available_judges %} <a href="{{ url('admin:judge_judge_change', judge.id) }}">{{ judge.name }}</a> {%- if not loop.last %}, {% endif %} {% endfor %} {% else %} {{ available_judges|join(", ") }} {% endif %} {% else %} <i class="red">{{ _('none available') }}</i> {% endif %} </div> </div> {% endif %} {% endblock %} {% block description %} {% if contest_problem and contest_problem.contest.use_clarifications and has_clarifications %} <div id="clarification_header_container"> <i class="fa fa-question-circle"></i> <a id="clarification_header"> {% trans trimmed length=clarifications|length %} This problem has {{length}} clarification(s) {% endtrans %} </a> </div> {% endif %} {% cache 86400 'problem_html' problem.id MATH_ENGINE LANGUAGE_CODE %} {{ description|markdown(lazy_load=True)|reference|str|safe }} {% endcache %} {% if problem.pdf_description %} <embed src="{{url('problem_pdf_description', problem.code)}}" width="100%" height="500" type="application/pdf"> {% endif %} {% with license=problem.license %} {% if license %} <span class="license"> <a href="{{ url('license', license.key) }}">{{ license.display or license.name }}</a> </span> <div style="clear:both"></div> {% endif %} {% endwith %} {% endblock %} {% block post_description_end %} {% if request.user.is_authenticated and not request.profile.mute %} {%- if contest_problem and contest_problem.contest.use_clarifications and request.profile.current_contest.live -%} <a href="{{ url('new_problem_ticket', problem.code) }}" class="clarify"> <i class="fa fa-flag" style="margin-right:0.5em"></i> {{ _('Request clarification') }} </a> <div style="clear: both"></div> {%- else -%} {% set actionbar_report_url = url('new_problem_ticket', problem.code) %} {% include "actionbar/list.html" %} <br> {%- endif -%} {% endif %} {% endblock %} {% block comments %} {% if contest_problem and contest_problem.contest.use_clarifications %} <div class="clarifications-area"> <h2><i class="fa fa-question-circle"></i> {{ _('Clarifications') }}</h2> {% if has_clarifications %} {% for clarification in clarifications %} <div class="problem-clarification"> <div class="time">{{ relative_time(clarification.date) }}</div> <span class="body"> {{ clarification.description|markdown|reference }} </span> </div> {% endfor %} {% else %} <p class="no-comments-message">{{ _('No clarifications have been made at this time.') }}</p> {% endif %} </div> {% else %} <div id="comment-section"> {% include "comments/list.html" %} </div> {% endif %} {% include "problem/related_problems.html" %} <iframe name="raw_problem" id="raw_problem"></iframe> {% endblock %} {% block bodyend %} {{ super() }} {% include "comments/math.html" %} {% endblock %}