mirror of
https://gitlab.com/mfocko/Codeforces.git
synced 2024-12-22 17:01:29 +01:00
1370 lines
78 KiB
HTML
1370 lines
78 KiB
HTML
|
|
||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
||
|
<html lang="en">
|
||
|
<head>
|
||
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||
|
<meta name="X-Csrf-Token" content="f645b5ba6d5ed1335580c6b5d4831ca7"/>
|
||
|
<meta id="viewport" name="viewport" content="width=device-width, initial-scale=0.01"/>
|
||
|
|
||
|
|
||
|
<script type="text/javascript" src="//codeforces.org/s/0/js/jquery-1.8.3.js"></script>
|
||
|
<script type="application/javascript">
|
||
|
window.locale = "en";
|
||
|
window.standaloneContest = false;
|
||
|
function adjustViewport() {
|
||
|
var screenWidthPx = Math.min($(window).width(), window.screen.width);
|
||
|
var siteWidthPx = 1100; // min width of site
|
||
|
var ratio = Math.min(screenWidthPx / siteWidthPx, 1.0);
|
||
|
var viewport = "width=device-width, initial-scale=" + ratio;
|
||
|
$('#viewport').attr('content', viewport);
|
||
|
var style = $('<style>html * { max-height: 1000000px; }</style>');
|
||
|
$('html > head').append(style);
|
||
|
}
|
||
|
|
||
|
if ( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
|
||
|
adjustViewport();
|
||
|
}
|
||
|
|
||
|
/* Protection against trailing dot in domain. */
|
||
|
let hostLength = window.location.host.length;
|
||
|
if (hostLength > 1 && window.location.host[hostLength - 1] === '.') {
|
||
|
window.location = window.location.protocol + "//" + window.location.host.substring(0, hostLength - 1);
|
||
|
}
|
||
|
</script>
|
||
|
<meta http-equiv="pragma" content="no-cache">
|
||
|
<meta http-equiv="expires" content="-1">
|
||
|
<meta http-equiv="profileName" content="f1">
|
||
|
<meta name="google-site-verification" content="OTd2dN5x4nS4OPknPI9JFg36fKxjqY0i1PSfFPv_J90"/>
|
||
|
<meta property="fb:admins" content="100001352546622" />
|
||
|
<meta property="og:image" content="//codeforces.org/s/0/images/codeforces-sponsored-by-ton.png" />
|
||
|
<link rel="image_src" href="//codeforces.org/s/0/images/codeforces-sponsored-by-ton.png" />
|
||
|
<meta property="og:title" content="Problems - Codeforces"/>
|
||
|
<meta property="og:description" content=""/>
|
||
|
|
||
|
<meta property="og:site_name" content="Codeforces"/>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<meta name="utc_offset" content="+03:00"/>
|
||
|
<meta name="verify-reformal" content="f56f99fd7e087fb6ccb48ef2" />
|
||
|
<title>Problems - Codeforces</title>
|
||
|
<meta name="description" content="Codeforces. Programming competitions and contests, programming community" />
|
||
|
<meta name="keywords" content="programming algorithm contest competition informatics olympiads c++ java graphs vkcup" />
|
||
|
<meta name="robots" content="index, follow" />
|
||
|
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/css/font-awesome.min.css" type="text/css" charset="utf-8" />
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/css/line-awesome.min.css" type="text/css" charset="utf-8" />
|
||
|
|
||
|
<link href='//fonts.googleapis.com/css?family=PT+Sans+Narrow:400,700&subset=latin,cyrillic' rel='stylesheet' type='text/css'>
|
||
|
<link href='//fonts.googleapis.com/css?family=Cuprum&subset=latin,cyrillic' rel='stylesheet' type='text/css'>
|
||
|
|
||
|
|
||
|
<link rel="apple-touch-icon" sizes="57x57" href="//codeforces.org/s/0/apple-icon-57x57.png">
|
||
|
<link rel="apple-touch-icon" sizes="60x60" href="//codeforces.org/s/0/apple-icon-60x60.png">
|
||
|
<link rel="apple-touch-icon" sizes="72x72" href="//codeforces.org/s/0/apple-icon-72x72.png">
|
||
|
<link rel="apple-touch-icon" sizes="76x76" href="//codeforces.org/s/0/apple-icon-76x76.png">
|
||
|
<link rel="apple-touch-icon" sizes="114x114" href="//codeforces.org/s/0/apple-icon-114x114.png">
|
||
|
<link rel="apple-touch-icon" sizes="120x120" href="//codeforces.org/s/0/apple-icon-120x120.png">
|
||
|
<link rel="apple-touch-icon" sizes="144x144" href="//codeforces.org/s/0/apple-icon-144x144.png">
|
||
|
<link rel="apple-touch-icon" sizes="152x152" href="//codeforces.org/s/0/apple-icon-152x152.png">
|
||
|
<link rel="apple-touch-icon" sizes="180x180" href="//codeforces.org/s/0/apple-icon-180x180.png">
|
||
|
<link rel="icon" type="image/png" sizes="192x192" href="//codeforces.org/s/0/android-icon-192x192.png">
|
||
|
<link rel="icon" type="image/png" sizes="32x32" href="//codeforces.org/s/0/favicon-32x32.png">
|
||
|
<link rel="icon" type="image/png" sizes="96x96" href="//codeforces.org/s/0/favicon-96x96.png">
|
||
|
<link rel="icon" type="image/png" sizes="16x16" href="//codeforces.org/s/0/favicon-16x16.png">
|
||
|
<link rel="manifest" href="/manifest.json">
|
||
|
<meta name="msapplication-TileColor" content="#ffffff">
|
||
|
<meta name="msapplication-TileImage" content="//codeforces.org/s/0/ms-icon-144x144.png">
|
||
|
<meta name="theme-color" content="#ffffff">
|
||
|
|
||
|
<!--CombineResourcesFilter-->
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/css/prettify.css" type="text/css" charset="utf-8" />
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/css/clear.css" type="text/css" charset="utf-8" />
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/css/style.css" type="text/css" charset="utf-8" />
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/css/ttypography.css" type="text/css" charset="utf-8" />
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/css/problem-statement.css" type="text/css" charset="utf-8" />
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/css/second-level-menu.css" type="text/css" charset="utf-8" />
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/css/roundbox.css" type="text/css" charset="utf-8" />
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/css/datatable.css" type="text/css" charset="utf-8" />
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/css/table-form.css" type="text/css" charset="utf-8" />
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/css/topic.css" type="text/css" charset="utf-8" />
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/css/jquery.jgrowl.css" type="text/css" charset="utf-8" />
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/css/facebox.css" type="text/css" charset="utf-8" />
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/css/jquery.wysiwyg.css" type="text/css" charset="utf-8" />
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/css/jquery.autocomplete.css" type="text/css" charset="utf-8" />
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/css/codeforces.datepick.css" type="text/css" charset="utf-8" />
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/css/colorbox.css" type="text/css" charset="utf-8" />
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/css/jquery.drafts.css" type="text/css" charset="utf-8" />
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/css/community.css" type="text/css" charset="utf-8" />
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/css/sidebar-menu.css" type="text/css" charset="utf-8" />
|
||
|
|
||
|
<!-- MathJax -->
|
||
|
<script type="text/x-mathjax-config">
|
||
|
MathJax.Hub.Config({
|
||
|
tex2jax: {inlineMath: [['$$$','$$$']], displayMath: [['$$$$$$','$$$$$$']]}
|
||
|
});
|
||
|
MathJax.Hub.Register.StartupHook("End", function () {
|
||
|
Codeforces.runMathJaxListeners();
|
||
|
});
|
||
|
</script>
|
||
|
<script type="text/javascript" async
|
||
|
src="https://cdn-mathjax.codeforces.com/MathJax.js?config=TeX-AMS_HTML-full"
|
||
|
>
|
||
|
</script>
|
||
|
<!-- /MathJax -->
|
||
|
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/prettify/prettify.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/moment-with-locales.min.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/pushstream.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/jquery.easing.min.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/jquery.lavalamp.min.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/jquery.jgrowl.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/jquery.swipe.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/jquery.hotkeys.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/facebox.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/jquery.wysiwyg.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/controls/wysiwyg.colorpicker.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/controls/wysiwyg.table.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/controls/wysiwyg.image.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/controls/wysiwyg.link.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/jquery.autocomplete.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/jquery.datepick.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/jquery.ie6blocker.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/jquery.colorbox-min.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/jquery.ba-bbq.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/jquery.drafts.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/clipboard.min.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/autosize.min.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/sjcl.js"></script>
|
||
|
<script type="text/javascript" src="/scripts/3dccf1f9f8cb4969b151d97264ecfd48/en/codeforces-options.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/codeforces.js?v=20160131"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/EventCatcher.js?v=20160131"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/preparedVerdictFormats-en.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/js/confetti.min.js"></script>
|
||
|
<!--/CombineResourcesFilter-->
|
||
|
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/markitup/skins/markitup/style.css" type="text/css" charset="utf-8" />
|
||
|
<link rel="stylesheet" href="//codeforces.org/s/19903/markitup/sets/markdown/style.css" type="text/css" charset="utf-8" />
|
||
|
|
||
|
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/markitup/jquery.markitup.js"></script>
|
||
|
<script type="text/javascript" src="//codeforces.org/s/19903/markitup/sets/markdown/set.js"></script>
|
||
|
|
||
|
<!--[if IE]>
|
||
|
<style>
|
||
|
#sidebar {
|
||
|
padding-left: 1em;
|
||
|
margin: 1em 1em 1em 0;
|
||
|
}
|
||
|
</style>
|
||
|
<![endif]-->
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
</head>
|
||
|
<body class=" "><span style='display:none;' class='csrf-token' data-csrf='f645b5ba6d5ed1335580c6b5d4831ca7'> </span>
|
||
|
|
||
|
<!-- .notificationTextCleaner used in Codeforces.showAnnouncements() -->
|
||
|
<div class="notificationTextCleaner" style="font-size: 0"></div>
|
||
|
<div class="button-up" style="display: none; opacity: 0.7; width: 50px; height:100%; position: fixed; left: 0; top: 0; cursor: pointer; text-align: center; line-height: 35px; color: #d3dbe4; font-weight: bold; font-size: 3.0rem;"><i class="icon-circle-arrow-up"></i></div>
|
||
|
<div class="verdictPrototypeDiv" style="display: none;"></div>
|
||
|
|
||
|
<!-- Codeforces JavaScripts. -->
|
||
|
<script type="text/javascript">
|
||
|
String.prototype.hashCode = function() {
|
||
|
var hash = 0, i, chr;
|
||
|
if (this.length === 0) return hash;
|
||
|
for (i = 0; i < this.length; i++) {
|
||
|
chr = this.charCodeAt(i);
|
||
|
hash = ((hash << 5) - hash) + chr;
|
||
|
hash |= 0; // Convert to 32bit integer
|
||
|
}
|
||
|
return hash;
|
||
|
};
|
||
|
|
||
|
var queryMobile = Codeforces.queryString.mobile;
|
||
|
if (queryMobile === "true" || queryMobile === "false") {
|
||
|
Codeforces.putToStorage("useMobile", queryMobile === "true");
|
||
|
} else {
|
||
|
var useMobile = Codeforces.getFromStorage("useMobile");
|
||
|
if (useMobile === true || useMobile === false) {
|
||
|
if (useMobile != false) {
|
||
|
Codeforces.redirect(Codeforces.updateUrlParameter(document.location.href, "mobile", useMobile));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
if (window.parent.frames.length > 0) {
|
||
|
window.stop();
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
$(document).ready(function () {
|
||
|
(function () {
|
||
|
jQuery.expr[':'].containsCI = function(elem, index, match) {
|
||
|
return !match || !match.length || match.length < 4 || !match[3] || (
|
||
|
elem.textContent || elem.innerText || jQuery(elem).text() || ''
|
||
|
).toLowerCase().indexOf(match[3].toLowerCase()) >= 0;
|
||
|
}
|
||
|
}(jQuery));
|
||
|
|
||
|
$.ajaxPrefilter(function(options, originalOptions, xhr) {
|
||
|
var csrf = Codeforces.getCsrfToken();
|
||
|
|
||
|
if (csrf) {
|
||
|
var data = originalOptions.data;
|
||
|
if (originalOptions.data !== undefined) {
|
||
|
if (Object.prototype.toString.call(originalOptions.data) === '[object String]') {
|
||
|
data = $.deparam(originalOptions.data);
|
||
|
}
|
||
|
} else {
|
||
|
data = {};
|
||
|
}
|
||
|
options.data = $.param($.extend(data, { csrf_token: csrf }));
|
||
|
}
|
||
|
});
|
||
|
|
||
|
window.getCodeforcesServerTime = function(callback) {
|
||
|
$.post("/data/time", {}, callback, "json");
|
||
|
}
|
||
|
|
||
|
window.updateTypography = function () {
|
||
|
$("div.ttypography code").addClass("tt");
|
||
|
$("div.ttypography pre>code").addClass("prettyprint").removeClass("tt");
|
||
|
$("div.ttypography table").addClass("bordertable");
|
||
|
prettyPrint();
|
||
|
}
|
||
|
|
||
|
$.ajaxSetup({ scriptCharset: "utf-8" ,contentType: "application/x-www-form-urlencoded; charset=UTF-8", headers: {
|
||
|
'X-Csrf-Token': Codeforces.getCsrfToken()
|
||
|
}});
|
||
|
|
||
|
window.updateTypography();
|
||
|
|
||
|
Codeforces.signForms();
|
||
|
|
||
|
setTimeout(function() {
|
||
|
$(".second-level-menu-list").lavaLamp({
|
||
|
fx: "backout",
|
||
|
speed: 700
|
||
|
});
|
||
|
}, 100);
|
||
|
|
||
|
|
||
|
Codeforces.countdown();
|
||
|
$("a[rel='photobox']").colorbox();
|
||
|
|
||
|
|
||
|
function showAnnouncements(json) {
|
||
|
//info("j=" + JSON.stringify(json));
|
||
|
|
||
|
if (json.t != "a") {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
setTimeout(function() {
|
||
|
Codeforces.showAnnouncements(json.d, "en");
|
||
|
}, Math.random() * 500);
|
||
|
}
|
||
|
|
||
|
function showEventCatcherUserMessage(json) {
|
||
|
if (json.t == "s") {
|
||
|
var points = json.d[5];
|
||
|
var passedTestCount = json.d[7];
|
||
|
var judgedTestCount = json.d[8];
|
||
|
var verdict = preparedVerdictFormats[json.d[12]];
|
||
|
var verdictPrototypeDiv = $(".verdictPrototypeDiv");
|
||
|
verdictPrototypeDiv.html(verdict);
|
||
|
if (judgedTestCount != null && judgedTestCount != undefined) {
|
||
|
verdictPrototypeDiv.find(".verdict-format-judged").text(judgedTestCount);
|
||
|
}
|
||
|
if (passedTestCount != null && passedTestCount != undefined) {
|
||
|
verdictPrototypeDiv.find(".verdict-format-passed").text(passedTestCount);
|
||
|
}
|
||
|
if (points != null && points != undefined) {
|
||
|
verdictPrototypeDiv.find(".verdict-format-points").text(points);
|
||
|
}
|
||
|
Codeforces.showMessage(verdictPrototypeDiv.text());
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$(".clickable-title").each(function() {
|
||
|
var title = $(this).attr("data-title");
|
||
|
if (title) {
|
||
|
var tmp = document.createElement("DIV");
|
||
|
tmp.innerHTML = title;
|
||
|
$(this).attr("title", tmp.textContent || tmp.innerText || "");
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$(".clickable-title").click(function() {
|
||
|
var title = $(this).attr("data-title");
|
||
|
if (title) {
|
||
|
Codeforces.alert(title);
|
||
|
} else {
|
||
|
Codeforces.alert($(this).attr("title"));
|
||
|
}
|
||
|
}).css("position", "relative").css("bottom", "3px");
|
||
|
|
||
|
Codeforces.showDelayedMessage();
|
||
|
|
||
|
Codeforces.reformatTimes();
|
||
|
|
||
|
//Codeforces.initializePubSub();
|
||
|
if (window.codeforcesOptions.subscribeServerUrl) {
|
||
|
window.eventCatcher = new EventCatcher(
|
||
|
window.codeforcesOptions.subscribeServerUrl,
|
||
|
[
|
||
|
Codeforces.getGlobalChannel(),
|
||
|
Codeforces.getUserChannel(),
|
||
|
Codeforces.getUserShowMessageChannel(),
|
||
|
Codeforces.getContestChannel(),
|
||
|
Codeforces.getParticipantChannel(),
|
||
|
Codeforces.getTalkChannel()
|
||
|
]
|
||
|
);
|
||
|
|
||
|
if (Codeforces.getParticipantChannel()) {
|
||
|
window.eventCatcher.subscribe(Codeforces.getParticipantChannel(), function(json) {
|
||
|
showAnnouncements(json);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
if (Codeforces.getContestChannel()) {
|
||
|
window.eventCatcher.subscribe(Codeforces.getContestChannel(), function(json) {
|
||
|
showAnnouncements(json);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
if (Codeforces.getGlobalChannel()) {
|
||
|
window.eventCatcher.subscribe(Codeforces.getGlobalChannel(), function(json) {
|
||
|
showAnnouncements(json);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
if (Codeforces.getUserChannel()) {
|
||
|
window.eventCatcher.subscribe(Codeforces.getUserChannel(), function(json) {
|
||
|
showAnnouncements(json);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
if (Codeforces.getUserShowMessageChannel()) {
|
||
|
window.eventCatcher.subscribe(Codeforces.getUserShowMessageChannel(), function(json) {
|
||
|
showEventCatcherUserMessage(json);
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Codeforces.setupContestTimes("/data/contests");
|
||
|
Codeforces.setupSpoilers();
|
||
|
Codeforces.setupTutorials("/data/problemTutorial");
|
||
|
});
|
||
|
</script>
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
var _gaq = _gaq || [];
|
||
|
_gaq.push(['_setAccount', 'UA-743380-5']);
|
||
|
_gaq.push(['_trackPageview']);
|
||
|
|
||
|
(function () {
|
||
|
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
||
|
ga.src = (document.location.protocol == 'https:' ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||
|
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||
|
})();
|
||
|
</script>
|
||
|
|
||
|
|
||
|
<div id="body">
|
||
|
<div style="width: 950px; margin: 0 auto;" class="compact-problemset">
|
||
|
<div id="header" style="position: relative; margin: 0;">
|
||
|
<div style="float:left;">
|
||
|
<a href="/"><img height="65" style="height: 65px;" src="//codeforces.org/s/34323/images/codeforces-sponsored-by-ton.png" alt="Codeforces"/></a>
|
||
|
</div>
|
||
|
<div class="lang">
|
||
|
<div style="text-align: right;">
|
||
|
<a href="?locale=en"><img src="//codeforces.org/s/34323/images/flags/24/gb.png" title="In English" alt="In English"/></a>
|
||
|
<a href="?locale=ru"><img src="//codeforces.org/s/34323/images/flags/24/ru.png" title="По-русски" alt="По-русски"/></a>
|
||
|
</div>
|
||
|
</div>
|
||
|
<br style="clear: both;"/>
|
||
|
</div>
|
||
|
|
||
|
<br style="clear: both;"/>
|
||
|
|
||
|
<div style="text-align: center; font-size: 1.8rem; margin-bottom: 0.5em;"
|
||
|
class="caption">Codeforces Round 555 (Div. 3)</div>
|
||
|
<div style="border-top: 1px solid #ccc; height: 1em;"></div>
|
||
|
|
||
|
<div class="problem-frames">
|
||
|
<div
|
||
|
style="margin-bottom: 2em;"
|
||
|
>
|
||
|
|
||
|
<style>
|
||
|
#facebox .content:has(.diff-popup) {
|
||
|
width: 90vw;
|
||
|
max-width: 120rem !important;
|
||
|
}
|
||
|
|
||
|
.testCaseMarker {
|
||
|
position: absolute;
|
||
|
font-weight: bold;
|
||
|
font-size: 1rem;
|
||
|
}
|
||
|
|
||
|
.diff-popup {
|
||
|
width: 90vw;
|
||
|
max-width: 120rem !important;
|
||
|
display: none;
|
||
|
overflow: auto;
|
||
|
}
|
||
|
|
||
|
.input-output-copier {
|
||
|
font-size: 1.2rem;
|
||
|
float: right;
|
||
|
color: #888 !important;
|
||
|
cursor: pointer;
|
||
|
border: 1px solid rgb(185, 185, 185);
|
||
|
padding: 3px;
|
||
|
margin: 1px;
|
||
|
line-height: 1.1rem;
|
||
|
text-transform: none;
|
||
|
}
|
||
|
|
||
|
.input-output-copier:hover {
|
||
|
background-color: #def;
|
||
|
}
|
||
|
|
||
|
.test-explanation textarea {
|
||
|
width: 100%;
|
||
|
height: 1.5em;
|
||
|
}
|
||
|
|
||
|
.pending-submission-message {
|
||
|
color: darkorange !important;
|
||
|
}
|
||
|
</style>
|
||
|
<script>
|
||
|
const OPENING_SPACE = String.fromCharCode(1001);
|
||
|
const CLOSING_SPACE = String.fromCharCode(1002);
|
||
|
|
||
|
const nodeToText = function (node, pre) {
|
||
|
let result = [];
|
||
|
|
||
|
if (node.tagName === "SCRIPT" || node.tagName === "math"
|
||
|
|| (node.classList && node.classList.contains("input-output-copier")))
|
||
|
return [];
|
||
|
|
||
|
if (node.tagName === "NOBR") {
|
||
|
result.push(OPENING_SPACE);
|
||
|
}
|
||
|
|
||
|
if (node.nodeType === Node.TEXT_NODE) {
|
||
|
let s = node.textContent;
|
||
|
if (!pre) {
|
||
|
s = s.replace(/\s+/g, " ");
|
||
|
}
|
||
|
if (s.length > 0) {
|
||
|
result.push(s);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (pre && node.tagName === "BR") {
|
||
|
result.push("\n");
|
||
|
}
|
||
|
|
||
|
node.childNodes.forEach(function (child) {
|
||
|
result.push(nodeToText(child, node.tagName === "PRE").join(""));
|
||
|
});
|
||
|
|
||
|
if (node.tagName === "DIV"
|
||
|
|| node.tagName === "P"
|
||
|
|| node.tagName === "PRE"
|
||
|
|| node.tagName === "UL"
|
||
|
|| node.tagName === "LI"
|
||
|
) {
|
||
|
result.push("\n");
|
||
|
}
|
||
|
|
||
|
if (node.tagName === "NOBR") {
|
||
|
result.push(CLOSING_SPACE);
|
||
|
}
|
||
|
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
const isSpecial = function (c) {
|
||
|
return c === ',' || c === '.' || c === ';' || c === ')' || c === ' ';
|
||
|
}
|
||
|
|
||
|
const convertStatementToText = function(statmentNode) {
|
||
|
const text = nodeToText(statmentNode, false).join("").replace(/ +/g, " ").replace(/\n\n+/g, "\n\n");
|
||
|
let result = [];
|
||
|
for (let i = 0; i < text.length; i++) {
|
||
|
const c = text.charAt(i);
|
||
|
if (c === OPENING_SPACE) {
|
||
|
if (!((i > 0 && text.charAt(i - 1) === '(') || (result.length > 0 && result[result.length - 1] === ' '))) {
|
||
|
result.push('+');
|
||
|
}
|
||
|
} else if (c === CLOSING_SPACE) {
|
||
|
if (!(i + 1 < text.length && isSpecial(text.charAt(i + 1)))) {
|
||
|
result.push('-');
|
||
|
}
|
||
|
} else {
|
||
|
result.push(c);
|
||
|
}
|
||
|
}
|
||
|
return result.join("").split("\n").map(value => value.trim()).join("\n");
|
||
|
};
|
||
|
</script>
|
||
|
<div class="diff-popup">
|
||
|
</div>
|
||
|
|
||
|
<div class="problemindexholder" problemindex="A" data-uuid="ps_dad770a0dcf3cabd7aed7668176257227c5b6211">
|
||
|
<div style="display: none; margin:1em 0;text-align: center; position: relative;" class="alert alert-info diff-notifier">
|
||
|
<div>The problem statement has recently been changed. <a class="view-changes" href="#">View the changes.</a></div>
|
||
|
<span class="diff-notifier-close" style="position: absolute; top: 0.2em; right: 0.3em; cursor: pointer; font-size: 1.4em;">×</span>
|
||
|
</div>
|
||
|
<div class="ttypography"><div class="problem-statement"><div class="header"><div class="title">A. Reachable Numbers</div><div class="time-limit"><div class="property-title">time limit per test</div>1 second</div><div class="memory-limit"><div class="property-title">memory limit per test</div>256 megabytes</div><div class="input-file"><div class="property-title">input</div>standard input</div><div class="output-file"><div class="property-title">output</div>standard output</div></div><div><p>Let's denote a function $$$f(x)$$$ in such a way: we add $$$1$$$ to $$$x$$$, then, while there is at least one trailing zero in the resulting number, we remove that zero. For example, </p><ul> <li> $$$f(599) = 6$$$: $$$599 + 1 = 600 \rightarrow 60 \rightarrow 6$$$; </li><li> $$$f(7) = 8$$$: $$$7 + 1 = 8$$$; </li><li> $$$f(9) = 1$$$: $$$9 + 1 = 10 \rightarrow 1$$$; </li><li> $$$f(10099) = 101$$$: $$$10099 + 1 = 10100 \rightarrow 1010 \rightarrow 101$$$. </li></ul><p>We say that some number $$$y$$$ is <span class="tex-font-style-bf">reachable</span> from $$$x$$$ if we can apply function $$$f$$$ to $$$x$$$ some (possibly zero) times so that we get $$$y$$$ as a result. For example, $$$102$$$ is reachable from $$$10098$$$ because $$$f(f(f(10098))) = f(f(10099)) = f(101) = 102$$$; and any number is reachable from itself.</p><p>You are given a number $$$n$$$; your task is to count how many different numbers are reachable from $$$n$$$.</p></div><div class="input-specification"><div class="section-title">Input</div><p>The first line contains one integer $$$n$$$ ($$$1 \le n \le 10^9$$$).</p></div><div class="output-specification"><div class="section-title">Output</div><p>Print one integer: the number of different numbers that are reachable from $$$n$$$.</p></div><div class="sample-tests"><div class="section-title">Examples</div><div class="sample-test"><div class="input"><div class="title">Input</div><pre>1098
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>20
|
||
|
</pre></div><div class="input"><div class="title">Input</div><pre>10
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>19
|
||
|
</pre></div></div></div><div class="note"><div class="section-title">Note</div><p>The numbers that are reachable from $$$1098$$$ are:</p><p>$$$1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1098, 1099$$$.</p></div></div><p> </p></div>
|
||
|
</div>
|
||
|
|
||
|
<script>
|
||
|
$(function () {
|
||
|
Codeforces.addMathJaxListener(function () {
|
||
|
let $problem = $("div[problemindex=A]");
|
||
|
let uuid = $problem.attr("data-uuid");
|
||
|
let statementText = convertStatementToText($problem.find(".ttypography").get(0));
|
||
|
|
||
|
let previousStatementText = Codeforces.getFromStorage(uuid);
|
||
|
if (previousStatementText) {
|
||
|
if (previousStatementText !== statementText) {
|
||
|
$problem.find(".diff-notifier").show();
|
||
|
|
||
|
$problem.find(".diff-notifier-close").click(function() {
|
||
|
Codeforces.putToStorageTtl(uuid, statementText, 6 * 60 * 60);
|
||
|
$problem.find(".diff-notifier").hide();
|
||
|
});
|
||
|
|
||
|
$problem.find("a.view-changes").click(function() {
|
||
|
$.post("/data/diff", {action: "getDiff", a: previousStatementText, b: statementText}, function (result) {
|
||
|
if (result["success"] === "true") {
|
||
|
Codeforces.facebox(".diff-popup", "//codeforces.org/s/34323");
|
||
|
$("#facebox .diff-popup").html(result["diff"]);
|
||
|
}
|
||
|
}, "json");
|
||
|
});
|
||
|
}
|
||
|
} else {
|
||
|
Codeforces.putToStorageTtl(uuid, statementText, 6 * 60 * 60);
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
</script>
|
||
|
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
$(document).ready(function () {
|
||
|
window.changedTests = new Set();
|
||
|
|
||
|
function endsWith(string, suffix) {
|
||
|
return string.indexOf(suffix, string.length - suffix.length) !== -1;
|
||
|
}
|
||
|
|
||
|
const inputFileDiv = $("div.input-file");
|
||
|
const inputFile = inputFileDiv.text();
|
||
|
const outputFileDiv = $("div.output-file");
|
||
|
const outputFile = outputFileDiv.text();
|
||
|
|
||
|
|
||
|
if (!endsWith(inputFile, "standard input")
|
||
|
&& !endsWith(inputFile, "standard input")) {
|
||
|
inputFileDiv.attr("style", "font-weight: bold");
|
||
|
}
|
||
|
|
||
|
if (!endsWith(outputFile, "standard output")
|
||
|
&& !endsWith(outputFile, "standard output")) {
|
||
|
outputFileDiv.attr("style", "font-weight: bold");
|
||
|
}
|
||
|
|
||
|
const titleDiv = $("div.header div.title");
|
||
|
|
||
|
|
||
|
|
||
|
String.prototype.replaceAll = function (search, replace) {
|
||
|
return this.split(search).join(replace);
|
||
|
};
|
||
|
|
||
|
$(".sample-test .title").each(function () {
|
||
|
const preId = ("id" + Math.random()).replaceAll(".", "0");
|
||
|
const cpyId = ("id" + Math.random()).replaceAll(".", "0");
|
||
|
|
||
|
$(this).parent().find("pre").attr("id", preId);
|
||
|
const $copy = $("<div title='Copy' data-clipboard-target='#" + preId + "' id='" + cpyId + "' class='input-output-copier'>Copy</div>");
|
||
|
$(this).append($copy);
|
||
|
|
||
|
const clipboard = new Clipboard('#' + cpyId, {
|
||
|
text: function (trigger) {
|
||
|
const pre = document.querySelector('#' + preId);
|
||
|
const lines = pre.querySelectorAll(".test-example-line");
|
||
|
return Codeforces.filterClipboardText(pre.innerText, lines.length);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
const isInput = $(this).parent().hasClass("input");
|
||
|
|
||
|
clipboard.on('success', function (e) {
|
||
|
if (isInput) {
|
||
|
Codeforces.showMessage("The example input has been copied into the clipboard");
|
||
|
} else {
|
||
|
Codeforces.showMessage("The example output has been copied into the clipboard");
|
||
|
}
|
||
|
e.clearSelection();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
$(".test-form-item input").change(function () {
|
||
|
addPendingSubmissionMessage($($(this).closest("form")), "You changed the answer, do not forget to submit it if you want to save the changes");
|
||
|
const index = $(this).closest(".problemindexholder").attr("problemindex");
|
||
|
let test = "";
|
||
|
$(this).closest("form input").each(function () {
|
||
|
const test_ = $(this).attr("name");
|
||
|
if (test_ && test_.substring(0, 4) === "test") {
|
||
|
test = test_;
|
||
|
}
|
||
|
});
|
||
|
if (index.length > 0 && test.length > 0) {
|
||
|
const indexTest = index + "::" + test;
|
||
|
window.changedTests.add(indexTest);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$(window).on('beforeunload', function () {
|
||
|
if (window.changedTests.size > 0) {
|
||
|
return 'Dialog text here';
|
||
|
}
|
||
|
});
|
||
|
|
||
|
autosize($('.test-explanation textarea'));
|
||
|
|
||
|
$(".test-example-line").hover(function() {
|
||
|
$(this).attr("class").split(" ").forEach((clazz) => {
|
||
|
if (clazz.substr(0, "test-example-line-".length) === "test-example-line-") {
|
||
|
let end = clazz.substr("test-example-line-".length);
|
||
|
if (end !== "even" && end !== "odd" && end !== "0") {
|
||
|
let top = 1E20;
|
||
|
let left = 1E20;
|
||
|
let problem = $(this).closest(".problemindexholder");
|
||
|
$(this).closest(".input").find("." + clazz).css("background-color", "#FFFDE7").each(function() {
|
||
|
top = Math.min(top, $(this).offset().top);
|
||
|
left = Math.min(left, $(this).offset().left);
|
||
|
});
|
||
|
let testCaseMarker = problem.find(".testCaseMarker_" + end);
|
||
|
if (testCaseMarker.length === 0) {
|
||
|
const html = "<div class=\"testCaseMarker testCaseMarker_" + end + " notice\"></div>";
|
||
|
problem.append($(html));
|
||
|
testCaseMarker = problem.find(".testCaseMarker_" + end);
|
||
|
}
|
||
|
if (testCaseMarker) {
|
||
|
testCaseMarker.show()
|
||
|
.offset({top, left: left - 20})
|
||
|
.text(end);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
}, function() {
|
||
|
$(this).attr("class").split(" ").forEach((clazz) => {
|
||
|
if (clazz.substr(0, "test-example-line-".length) === "test-example-line-") {
|
||
|
let end = clazz.substr("test-example-line-".length);
|
||
|
if (end !== "even" && end !== "odd" && end !== "0") {
|
||
|
$("." + clazz).css("background-color", "");
|
||
|
$(this).closest(".problemindexholder").find(".testCaseMarker_" + end).hide();
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
|
||
|
});
|
||
|
</script>
|
||
|
</div>
|
||
|
<div
|
||
|
style="margin-bottom: 2em;"
|
||
|
>
|
||
|
|
||
|
|
||
|
<div class="problemindexholder" problemindex="B" data-uuid="ps_1204a01de0551597b012c217c09b952b0af7919a">
|
||
|
<div style="display: none; margin:1em 0;text-align: center; position: relative;" class="alert alert-info diff-notifier">
|
||
|
<div>The problem statement has recently been changed. <a class="view-changes" href="#">View the changes.</a></div>
|
||
|
<span class="diff-notifier-close" style="position: absolute; top: 0.2em; right: 0.3em; cursor: pointer; font-size: 1.4em;">×</span>
|
||
|
</div>
|
||
|
<div class="ttypography"><div class="problem-statement"><div class="header"><div class="title">B. Long Number</div><div class="time-limit"><div class="property-title">time limit per test</div>2 seconds</div><div class="memory-limit"><div class="property-title">memory limit per test</div>256 megabytes</div><div class="input-file"><div class="property-title">input</div>standard input</div><div class="output-file"><div class="property-title">output</div>standard output</div></div><div><p>You are given a long decimal number $$$a$$$ consisting of $$$n$$$ digits from $$$1$$$ to $$$9$$$. You also have a function $$$f$$$ that maps every digit from $$$1$$$ to $$$9$$$ to some (possibly the same) digit from $$$1$$$ to $$$9$$$.</p><p>You can perform the following operation <span class="tex-font-style-bf">no more than once</span>: choose a non-empty <span class="tex-font-style-bf">contiguous subsegment</span> of digits in $$$a$$$, and replace each digit $$$x$$$ from this segment with $$$f(x)$$$. For example, if $$$a = 1337$$$, $$$f(1) = 1$$$, $$$f(3) = 5$$$, $$$f(7) = 3$$$, and you choose the segment consisting of three rightmost digits, you get $$$1553$$$ as the result.</p><p>What is the maximum possible number you can obtain applying this operation no more than once?</p></div><div class="input-specification"><div class="section-title">Input</div><p>The first line contains one integer $$$n$$$ ($$$1 \le n \le 2 \cdot 10^5$$$) — the number of digits in $$$a$$$.</p><p>The second line contains a string of $$$n$$$ characters, denoting the number $$$a$$$. Each character is a decimal digit from $$$1$$$ to $$$9$$$.</p><p>The third line contains exactly $$$9$$$ integers $$$f(1)$$$, $$$f(2)$$$, ..., $$$f(9)$$$ ($$$1 \le f(i) \le 9$$$).</p></div><div class="output-specification"><div class="section-title">Output</div><p>Print the maximum number you can get after applying the operation described in the statement no more than once.</p></div><div class="sample-tests"><div class="section-title">Examples</div><div class="sample-test"><div class="input"><div class="title">Input</div><pre>4
|
||
|
1337
|
||
|
1 2 5 4 6 6 3 1 9
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>1557
|
||
|
</pre></div><div class="input"><div class="title">Input</div><pre>5
|
||
|
11111
|
||
|
9 8 7 6 5 4 3 2 1
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>99999
|
||
|
</pre></div><div class="input"><div class="title">Input</div><pre>2
|
||
|
33
|
||
|
1 1 1 1 1 1 1 1 1
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>33
|
||
|
</pre></div></div></div></div><p> </p></div>
|
||
|
</div>
|
||
|
|
||
|
<script>
|
||
|
$(function () {
|
||
|
Codeforces.addMathJaxListener(function () {
|
||
|
let $problem = $("div[problemindex=B]");
|
||
|
let uuid = $problem.attr("data-uuid");
|
||
|
let statementText = convertStatementToText($problem.find(".ttypography").get(0));
|
||
|
|
||
|
let previousStatementText = Codeforces.getFromStorage(uuid);
|
||
|
if (previousStatementText) {
|
||
|
if (previousStatementText !== statementText) {
|
||
|
$problem.find(".diff-notifier").show();
|
||
|
|
||
|
$problem.find(".diff-notifier-close").click(function() {
|
||
|
Codeforces.putToStorageTtl(uuid, statementText, 6 * 60 * 60);
|
||
|
$problem.find(".diff-notifier").hide();
|
||
|
});
|
||
|
|
||
|
$problem.find("a.view-changes").click(function() {
|
||
|
$.post("/data/diff", {action: "getDiff", a: previousStatementText, b: statementText}, function (result) {
|
||
|
if (result["success"] === "true") {
|
||
|
Codeforces.facebox(".diff-popup", "//codeforces.org/s/34323");
|
||
|
$("#facebox .diff-popup").html(result["diff"]);
|
||
|
}
|
||
|
}, "json");
|
||
|
});
|
||
|
}
|
||
|
} else {
|
||
|
Codeforces.putToStorageTtl(uuid, statementText, 6 * 60 * 60);
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
</script>
|
||
|
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
$(document).ready(function () {
|
||
|
|
||
|
function endsWith(string, suffix) {
|
||
|
return string.indexOf(suffix, string.length - suffix.length) !== -1;
|
||
|
}
|
||
|
|
||
|
const inputFileDiv = $("div.input-file");
|
||
|
const inputFile = inputFileDiv.text();
|
||
|
const outputFileDiv = $("div.output-file");
|
||
|
const outputFile = outputFileDiv.text();
|
||
|
|
||
|
|
||
|
if (!endsWith(inputFile, "standard input")
|
||
|
&& !endsWith(inputFile, "standard input")) {
|
||
|
inputFileDiv.attr("style", "font-weight: bold");
|
||
|
}
|
||
|
|
||
|
if (!endsWith(outputFile, "standard output")
|
||
|
&& !endsWith(outputFile, "standard output")) {
|
||
|
outputFileDiv.attr("style", "font-weight: bold");
|
||
|
}
|
||
|
|
||
|
const titleDiv = $("div.header div.title");
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
});
|
||
|
</script>
|
||
|
</div>
|
||
|
<div
|
||
|
style="margin-bottom: 2em;"
|
||
|
>
|
||
|
|
||
|
|
||
|
<div class="problemindexholder" problemindex="C1" data-uuid="ps_5f27111afdcaef4248549034abfdd2f5a5c8e3ca">
|
||
|
<div style="display: none; margin:1em 0;text-align: center; position: relative;" class="alert alert-info diff-notifier">
|
||
|
<div>The problem statement has recently been changed. <a class="view-changes" href="#">View the changes.</a></div>
|
||
|
<span class="diff-notifier-close" style="position: absolute; top: 0.2em; right: 0.3em; cursor: pointer; font-size: 1.4em;">×</span>
|
||
|
</div>
|
||
|
<div class="ttypography"><div class="problem-statement"><div class="header"><div class="title">C1. Increasing Subsequence (easy version)</div><div class="time-limit"><div class="property-title">time limit per test</div>2 seconds</div><div class="memory-limit"><div class="property-title">memory limit per test</div>256 megabytes</div><div class="input-file"><div class="property-title">input</div>standard input</div><div class="output-file"><div class="property-title">output</div>standard output</div></div><div><p><span class="tex-font-style-bf">The only difference between problems C1 and C2 is that all values in input of problem C1 are distinct (this condition may be false for problem C2)</span>.</p><p>You are given a sequence $$$a$$$ consisting of $$$n$$$ integers. <span class="tex-font-style-bf">All these integers are distinct, each value from $$$1$$$ to $$$n$$$ appears in the sequence exactly once.</span></p><p>You are making a sequence of moves. During each move you must take either the leftmost element of the sequence or the rightmost element of the sequence, write it down and remove it from the sequence. Your task is to write down a <span class="tex-font-style-bf">strictly</span> increasing sequence, and among all such sequences you should take the longest (the length of the sequence is the number of elements in it).</p><p>For example, for the sequence $$$[2, 1, 5, 4, 3]$$$ the answer is $$$4$$$ (you take $$$2$$$ and the sequence becomes $$$[1, 5, 4, 3]$$$, then you take the rightmost element $$$3$$$ and the sequence becomes $$$[1, 5, 4]$$$, then you take $$$4$$$ and the sequence becomes $$$[1, 5]$$$ and then you take $$$5$$$ and the sequence becomes $$$[1]$$$, the obtained increasing sequence is $$$[2, 3, 4, 5]$$$).</p></div><div class="input-specification"><div class="section-title">Input</div><p>The first line of the input contains one integer $$$n$$$ ($$$1 \le n \le 2 \cdot 10^5$$$) — the number of elements in $$$a$$$.</p><p>The second line of the input contains $$$n$$$ integers $$$a_1, a_2, \dots, a_n$$$ ($$$1 \le a_i \le n$$$), where $$$a_i$$$ is the $$$i$$$-th element of $$$a$$$. <span class="tex-font-style-bf">All these integers are pairwise distinct</span>.</p></div><div class="output-specification"><div class="section-title">Output</div><p>In the first line of the output print $$$k$$$ — the maximum number of elements in a <span class="tex-font-style-bf">strictly</span> increasing sequence you can obtain.</p><p>In the second line print a string $$$s$$$ of length $$$k$$$, where the $$$j$$$-th character of this string $$$s_j$$$ should be '<span class="tex-font-style-tt">L</span>' if you take the leftmost element during the $$$j$$$-th move and '<span class="tex-font-style-tt">R</span>' otherwise. If there are multiple answers, you can print any.</p></div><div class="sample-tests"><div class="section-title">Examples</div><div class="sample-test"><div class="input"><div class="title">Input</div><pre>5
|
||
|
2 1 5 4 3
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>4
|
||
|
LRRR
|
||
|
</pre></div><div class="input"><div class="title">Input</div><pre>7
|
||
|
1 3 5 6 7 4 2
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>7
|
||
|
LRLRLLL
|
||
|
</pre></div><div class="input"><div class="title">Input</div><pre>3
|
||
|
1 2 3
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>3
|
||
|
LLL
|
||
|
</pre></div><div class="input"><div class="title">Input</div><pre>4
|
||
|
1 2 4 3
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>4
|
||
|
LLRL
|
||
|
</pre></div></div></div><div class="note"><div class="section-title">Note</div><p>The first example is described in the problem statement.</p></div></div><p> </p></div>
|
||
|
</div>
|
||
|
|
||
|
<script>
|
||
|
$(function () {
|
||
|
Codeforces.addMathJaxListener(function () {
|
||
|
let $problem = $("div[problemindex=C1]");
|
||
|
let uuid = $problem.attr("data-uuid");
|
||
|
let statementText = convertStatementToText($problem.find(".ttypography").get(0));
|
||
|
|
||
|
let previousStatementText = Codeforces.getFromStorage(uuid);
|
||
|
if (previousStatementText) {
|
||
|
if (previousStatementText !== statementText) {
|
||
|
$problem.find(".diff-notifier").show();
|
||
|
|
||
|
$problem.find(".diff-notifier-close").click(function() {
|
||
|
Codeforces.putToStorageTtl(uuid, statementText, 6 * 60 * 60);
|
||
|
$problem.find(".diff-notifier").hide();
|
||
|
});
|
||
|
|
||
|
$problem.find("a.view-changes").click(function() {
|
||
|
$.post("/data/diff", {action: "getDiff", a: previousStatementText, b: statementText}, function (result) {
|
||
|
if (result["success"] === "true") {
|
||
|
Codeforces.facebox(".diff-popup", "//codeforces.org/s/34323");
|
||
|
$("#facebox .diff-popup").html(result["diff"]);
|
||
|
}
|
||
|
}, "json");
|
||
|
});
|
||
|
}
|
||
|
} else {
|
||
|
Codeforces.putToStorageTtl(uuid, statementText, 6 * 60 * 60);
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
</script>
|
||
|
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
$(document).ready(function () {
|
||
|
|
||
|
function endsWith(string, suffix) {
|
||
|
return string.indexOf(suffix, string.length - suffix.length) !== -1;
|
||
|
}
|
||
|
|
||
|
const inputFileDiv = $("div.input-file");
|
||
|
const inputFile = inputFileDiv.text();
|
||
|
const outputFileDiv = $("div.output-file");
|
||
|
const outputFile = outputFileDiv.text();
|
||
|
|
||
|
|
||
|
if (!endsWith(inputFile, "standard input")
|
||
|
&& !endsWith(inputFile, "standard input")) {
|
||
|
inputFileDiv.attr("style", "font-weight: bold");
|
||
|
}
|
||
|
|
||
|
if (!endsWith(outputFile, "standard output")
|
||
|
&& !endsWith(outputFile, "standard output")) {
|
||
|
outputFileDiv.attr("style", "font-weight: bold");
|
||
|
}
|
||
|
|
||
|
const titleDiv = $("div.header div.title");
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
});
|
||
|
</script>
|
||
|
</div>
|
||
|
<div
|
||
|
style="margin-bottom: 2em;"
|
||
|
>
|
||
|
|
||
|
|
||
|
<div class="problemindexholder" problemindex="C2" data-uuid="ps_169bb1bea36b068589c2a10c957047d54f4cf86e">
|
||
|
<div style="display: none; margin:1em 0;text-align: center; position: relative;" class="alert alert-info diff-notifier">
|
||
|
<div>The problem statement has recently been changed. <a class="view-changes" href="#">View the changes.</a></div>
|
||
|
<span class="diff-notifier-close" style="position: absolute; top: 0.2em; right: 0.3em; cursor: pointer; font-size: 1.4em;">×</span>
|
||
|
</div>
|
||
|
<div class="ttypography"><div class="problem-statement"><div class="header"><div class="title">C2. Increasing Subsequence (hard version)</div><div class="time-limit"><div class="property-title">time limit per test</div>2 seconds</div><div class="memory-limit"><div class="property-title">memory limit per test</div>256 megabytes</div><div class="input-file"><div class="property-title">input</div>standard input</div><div class="output-file"><div class="property-title">output</div>standard output</div></div><div><p><span class="tex-font-style-bf">The only difference between problems C1 and C2 is that all values in input of problem C1 are distinct (this condition may be false for problem C2)</span>.</p><p>You are given a sequence $$$a$$$ consisting of $$$n$$$ integers.</p><p>You are making a sequence of moves. During each move you must take either the leftmost element of the sequence or the rightmost element of the sequence, write it down and remove it from the sequence. Your task is to write down a <span class="tex-font-style-bf">strictly</span> increasing sequence, and among all such sequences you should take the longest (the length of the sequence is the number of elements in it).</p><p>For example, for the sequence $$$[1, 2, 4, 3, 2]$$$ the answer is $$$4$$$ (you take $$$1$$$ and the sequence becomes $$$[2, 4, 3, 2]$$$, then you take the rightmost element $$$2$$$ and the sequence becomes $$$[2, 4, 3]$$$, then you take $$$3$$$ and the sequence becomes $$$[2, 4]$$$ and then you take $$$4$$$ and the sequence becomes $$$[2]$$$, the obtained increasing sequence is $$$[1, 2, 3, 4]$$$).</p></div><div class="input-specification"><div class="section-title">Input</div><p>The first line of the input contains one integer $$$n$$$ ($$$1 \le n \le 2 \cdot 10^5$$$) — the number of elements in $$$a$$$.</p><p>The second line of the input contains $$$n$$$ integers $$$a_1, a_2, \dots, a_n$$$ ($$$1 \le a_i \le 2 \cdot 10^5$$$), where $$$a_i$$$ is the $$$i$$$-th element of $$$a$$$.</p></div><div class="output-specification"><div class="section-title">Output</div><p>In the first line of the output print $$$k$$$ — the maximum number of elements in a <span class="tex-font-style-bf">strictly</span> increasing sequence you can obtain.</p><p>In the second line print a string $$$s$$$ of length $$$k$$$, where the $$$j$$$-th character of this string $$$s_j$$$ should be '<span class="tex-font-style-tt">L</span>' if you take the leftmost element during the $$$j$$$-th move and '<span class="tex-font-style-tt">R</span>' otherwise. If there are multiple answers, you can print any.</p></div><div class="sample-tests"><div class="section-title">Examples</div><div class="sample-test"><div class="input"><div class="title">Input</div><pre>5
|
||
|
1 2 4 3 2
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>4
|
||
|
LRRR
|
||
|
</pre></div><div class="input"><div class="title">Input</div><pre>7
|
||
|
1 3 5 6 5 4 2
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>6
|
||
|
LRLRRR
|
||
|
</pre></div><div class="input"><div class="title">Input</div><pre>3
|
||
|
2 2 2
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>1
|
||
|
R
|
||
|
</pre></div><div class="input"><div class="title">Input</div><pre>4
|
||
|
1 2 4 3
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>4
|
||
|
LLRR
|
||
|
</pre></div></div></div><div class="note"><div class="section-title">Note</div><p>The first example is described in the problem statement.</p></div></div><p> </p></div>
|
||
|
</div>
|
||
|
|
||
|
<script>
|
||
|
$(function () {
|
||
|
Codeforces.addMathJaxListener(function () {
|
||
|
let $problem = $("div[problemindex=C2]");
|
||
|
let uuid = $problem.attr("data-uuid");
|
||
|
let statementText = convertStatementToText($problem.find(".ttypography").get(0));
|
||
|
|
||
|
let previousStatementText = Codeforces.getFromStorage(uuid);
|
||
|
if (previousStatementText) {
|
||
|
if (previousStatementText !== statementText) {
|
||
|
$problem.find(".diff-notifier").show();
|
||
|
|
||
|
$problem.find(".diff-notifier-close").click(function() {
|
||
|
Codeforces.putToStorageTtl(uuid, statementText, 6 * 60 * 60);
|
||
|
$problem.find(".diff-notifier").hide();
|
||
|
});
|
||
|
|
||
|
$problem.find("a.view-changes").click(function() {
|
||
|
$.post("/data/diff", {action: "getDiff", a: previousStatementText, b: statementText}, function (result) {
|
||
|
if (result["success"] === "true") {
|
||
|
Codeforces.facebox(".diff-popup", "//codeforces.org/s/34323");
|
||
|
$("#facebox .diff-popup").html(result["diff"]);
|
||
|
}
|
||
|
}, "json");
|
||
|
});
|
||
|
}
|
||
|
} else {
|
||
|
Codeforces.putToStorageTtl(uuid, statementText, 6 * 60 * 60);
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
</script>
|
||
|
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
$(document).ready(function () {
|
||
|
|
||
|
function endsWith(string, suffix) {
|
||
|
return string.indexOf(suffix, string.length - suffix.length) !== -1;
|
||
|
}
|
||
|
|
||
|
const inputFileDiv = $("div.input-file");
|
||
|
const inputFile = inputFileDiv.text();
|
||
|
const outputFileDiv = $("div.output-file");
|
||
|
const outputFile = outputFileDiv.text();
|
||
|
|
||
|
|
||
|
if (!endsWith(inputFile, "standard input")
|
||
|
&& !endsWith(inputFile, "standard input")) {
|
||
|
inputFileDiv.attr("style", "font-weight: bold");
|
||
|
}
|
||
|
|
||
|
if (!endsWith(outputFile, "standard output")
|
||
|
&& !endsWith(outputFile, "standard output")) {
|
||
|
outputFileDiv.attr("style", "font-weight: bold");
|
||
|
}
|
||
|
|
||
|
const titleDiv = $("div.header div.title");
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
});
|
||
|
</script>
|
||
|
</div>
|
||
|
<div
|
||
|
style="margin-bottom: 2em;"
|
||
|
>
|
||
|
|
||
|
|
||
|
<div class="problemindexholder" problemindex="D" data-uuid="ps_b815ee88e4a913fa6554a5c249b7bd72a58114b5">
|
||
|
<div style="display: none; margin:1em 0;text-align: center; position: relative;" class="alert alert-info diff-notifier">
|
||
|
<div>The problem statement has recently been changed. <a class="view-changes" href="#">View the changes.</a></div>
|
||
|
<span class="diff-notifier-close" style="position: absolute; top: 0.2em; right: 0.3em; cursor: pointer; font-size: 1.4em;">×</span>
|
||
|
</div>
|
||
|
<div class="ttypography"><div class="problem-statement"><div class="header"><div class="title">D. N Problems During K Days</div><div class="time-limit"><div class="property-title">time limit per test</div>1 second</div><div class="memory-limit"><div class="property-title">memory limit per test</div>256 megabytes</div><div class="input-file"><div class="property-title">input</div>standard input</div><div class="output-file"><div class="property-title">output</div>standard output</div></div><div><p>Polycarp has to solve exactly $$$n$$$ problems to improve his programming skill before an important programming competition. But this competition will be held very soon, most precisely, it will start in $$$k$$$ days. It means that Polycarp has exactly $$$k$$$ days for training!</p><p>Polycarp doesn't want to procrastinate, so he wants to solve at least one problem during each of $$$k$$$ days. He also doesn't want to overwork, so if he solves $$$x$$$ problems during some day, he should solve no more than $$$2x$$$ problems during the next day. And, at last, he wants to improve his skill, so if he solves $$$x$$$ problems during some day, he should solve at least $$$x+1$$$ problem during the next day.</p><p>More formally: let $$$[a_1, a_2, \dots, a_k]$$$ be the array of numbers of problems solved by Polycarp. The $$$i$$$-th element of this array is the number of problems Polycarp solves during the $$$i$$$-th day of his training. Then the following conditions must be satisfied: </p><ul> <li> sum of all $$$a_i$$$ for $$$i$$$ from $$$1$$$ to $$$k$$$ should be $$$n$$$; </li><li> $$$a_i$$$ should be <span class="tex-font-style-bf">greater than zero</span> for each $$$i$$$ from $$$1$$$ to $$$k$$$; </li><li> the condition $$$a_i < a_{i + 1} \le 2 a_i$$$ should be satisfied for each $$$i$$$ from $$$1$$$ to $$$k-1$$$. </li></ul><p>Your problem is to find <span class="tex-font-style-bf">any</span> array $$$a$$$ of length $$$k$$$ satisfying the conditions above or say that it is impossible to do it.</p></div><div class="input-specification"><div class="section-title">Input</div><p>The first line of the input contains two integers $$$n$$$ and $$$k$$$ ($$$1 \le n \le 10^9, 1 \le k \le 10^5$$$) — the number of problems Polycarp wants to solve and the number of days Polycarp wants to train.</p></div><div class="output-specification"><div class="section-title">Output</div><p>If it is impossible to find any array $$$a$$$ of length $$$k$$$ satisfying Polycarp's rules of training, print "<span class="tex-font-style-tt">NO</span>" in the first line.</p><p>Otherwise print "<span class="tex-font-style-tt">YES</span>" in the first line, then print $$$k$$$ integers $$$a_1, a_2, \dots, a_k$$$ in the second line, where $$$a_i$$$ should be the number of problems Polycarp should solve during the $$$i$$$-th day. If there are multiple answers, you can print any.</p></div><div class="sample-tests"><div class="section-title">Examples</div><div class="sample-test"><div class="input"><div class="title">Input</div><pre>26 6
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>YES
|
||
|
1 2 4 5 6 8
|
||
|
</pre></div><div class="input"><div class="title">Input</div><pre>8 3
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>NO
|
||
|
</pre></div><div class="input"><div class="title">Input</div><pre>1 1
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>YES
|
||
|
1
|
||
|
</pre></div><div class="input"><div class="title">Input</div><pre>9 4
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>NO
|
||
|
</pre></div></div></div></div><p> </p></div>
|
||
|
</div>
|
||
|
|
||
|
<script>
|
||
|
$(function () {
|
||
|
Codeforces.addMathJaxListener(function () {
|
||
|
let $problem = $("div[problemindex=D]");
|
||
|
let uuid = $problem.attr("data-uuid");
|
||
|
let statementText = convertStatementToText($problem.find(".ttypography").get(0));
|
||
|
|
||
|
let previousStatementText = Codeforces.getFromStorage(uuid);
|
||
|
if (previousStatementText) {
|
||
|
if (previousStatementText !== statementText) {
|
||
|
$problem.find(".diff-notifier").show();
|
||
|
|
||
|
$problem.find(".diff-notifier-close").click(function() {
|
||
|
Codeforces.putToStorageTtl(uuid, statementText, 6 * 60 * 60);
|
||
|
$problem.find(".diff-notifier").hide();
|
||
|
});
|
||
|
|
||
|
$problem.find("a.view-changes").click(function() {
|
||
|
$.post("/data/diff", {action: "getDiff", a: previousStatementText, b: statementText}, function (result) {
|
||
|
if (result["success"] === "true") {
|
||
|
Codeforces.facebox(".diff-popup", "//codeforces.org/s/34323");
|
||
|
$("#facebox .diff-popup").html(result["diff"]);
|
||
|
}
|
||
|
}, "json");
|
||
|
});
|
||
|
}
|
||
|
} else {
|
||
|
Codeforces.putToStorageTtl(uuid, statementText, 6 * 60 * 60);
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
</script>
|
||
|
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
$(document).ready(function () {
|
||
|
|
||
|
function endsWith(string, suffix) {
|
||
|
return string.indexOf(suffix, string.length - suffix.length) !== -1;
|
||
|
}
|
||
|
|
||
|
const inputFileDiv = $("div.input-file");
|
||
|
const inputFile = inputFileDiv.text();
|
||
|
const outputFileDiv = $("div.output-file");
|
||
|
const outputFile = outputFileDiv.text();
|
||
|
|
||
|
|
||
|
if (!endsWith(inputFile, "standard input")
|
||
|
&& !endsWith(inputFile, "standard input")) {
|
||
|
inputFileDiv.attr("style", "font-weight: bold");
|
||
|
}
|
||
|
|
||
|
if (!endsWith(outputFile, "standard output")
|
||
|
&& !endsWith(outputFile, "standard output")) {
|
||
|
outputFileDiv.attr("style", "font-weight: bold");
|
||
|
}
|
||
|
|
||
|
const titleDiv = $("div.header div.title");
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
});
|
||
|
</script>
|
||
|
</div>
|
||
|
<div
|
||
|
style="margin-bottom: 2em;"
|
||
|
>
|
||
|
|
||
|
|
||
|
<div class="problemindexholder" problemindex="E" data-uuid="ps_d7ae640da18821ef92e7a88d148f1054a84ed7aa">
|
||
|
<div style="display: none; margin:1em 0;text-align: center; position: relative;" class="alert alert-info diff-notifier">
|
||
|
<div>The problem statement has recently been changed. <a class="view-changes" href="#">View the changes.</a></div>
|
||
|
<span class="diff-notifier-close" style="position: absolute; top: 0.2em; right: 0.3em; cursor: pointer; font-size: 1.4em;">×</span>
|
||
|
</div>
|
||
|
<div class="ttypography"><div class="problem-statement"><div class="header"><div class="title">E. Minimum Array</div><div class="time-limit"><div class="property-title">time limit per test</div>2 seconds</div><div class="memory-limit"><div class="property-title">memory limit per test</div>256 megabytes</div><div class="input-file"><div class="property-title">input</div>standard input</div><div class="output-file"><div class="property-title">output</div>standard output</div></div><div><p>You are given two arrays $$$a$$$ and $$$b$$$, both of length $$$n$$$. All elements of both arrays are from $$$0$$$ to $$$n-1$$$.</p><p>You can reorder elements of the array $$$b$$$ (if you want, you may leave the order of elements as it is). After that, let array $$$c$$$ be the array of length $$$n$$$, the $$$i$$$-th element of this array is $$$c_i = (a_i + b_i) \% n$$$, where $$$x \% y$$$ is $$$x$$$ modulo $$$y$$$.</p><p>Your task is to reorder elements of the array $$$b$$$ to obtain the <span class="tex-font-style-bf">lexicographically</span> minimum possible array $$$c$$$.</p><p>Array $$$x$$$ of length $$$n$$$ is lexicographically less than array $$$y$$$ of length $$$n$$$, if there exists such $$$i$$$ ($$$1 \le i \le n$$$), that $$$x_i < y_i$$$, and for any $$$j$$$ ($$$1 \le j < i$$$) $$$x_j = y_j$$$.</p></div><div class="input-specification"><div class="section-title">Input</div><p>The first line of the input contains one integer $$$n$$$ ($$$1 \le n \le 2 \cdot 10^5$$$) — the number of elements in $$$a$$$, $$$b$$$ and $$$c$$$.</p><p>The second line of the input contains $$$n$$$ integers $$$a_1, a_2, \dots, a_n$$$ ($$$0 \le a_i < n$$$), where $$$a_i$$$ is the $$$i$$$-th element of $$$a$$$.</p><p>The third line of the input contains $$$n$$$ integers $$$b_1, b_2, \dots, b_n$$$ ($$$0 \le b_i < n$$$), where $$$b_i$$$ is the $$$i$$$-th element of $$$b$$$.</p></div><div class="output-specification"><div class="section-title">Output</div><p>Print the <span class="tex-font-style-bf">lexicographically</span> minimum possible array $$$c$$$. Recall that your task is to reorder elements of the array $$$b$$$ and obtain the <span class="tex-font-style-bf">lexicographically</span> minimum possible array $$$c$$$, where the $$$i$$$-th element of $$$c$$$ is $$$c_i = (a_i + b_i) \% n$$$.</p></div><div class="sample-tests"><div class="section-title">Examples</div><div class="sample-test"><div class="input"><div class="title">Input</div><pre>4
|
||
|
0 1 2 1
|
||
|
3 2 1 1
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>1 0 0 2
|
||
|
</pre></div><div class="input"><div class="title">Input</div><pre>7
|
||
|
2 5 1 5 3 4 3
|
||
|
2 4 3 5 6 5 1
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>0 0 0 1 0 2 4
|
||
|
</pre></div></div></div></div><p> </p></div>
|
||
|
</div>
|
||
|
|
||
|
<script>
|
||
|
$(function () {
|
||
|
Codeforces.addMathJaxListener(function () {
|
||
|
let $problem = $("div[problemindex=E]");
|
||
|
let uuid = $problem.attr("data-uuid");
|
||
|
let statementText = convertStatementToText($problem.find(".ttypography").get(0));
|
||
|
|
||
|
let previousStatementText = Codeforces.getFromStorage(uuid);
|
||
|
if (previousStatementText) {
|
||
|
if (previousStatementText !== statementText) {
|
||
|
$problem.find(".diff-notifier").show();
|
||
|
|
||
|
$problem.find(".diff-notifier-close").click(function() {
|
||
|
Codeforces.putToStorageTtl(uuid, statementText, 6 * 60 * 60);
|
||
|
$problem.find(".diff-notifier").hide();
|
||
|
});
|
||
|
|
||
|
$problem.find("a.view-changes").click(function() {
|
||
|
$.post("/data/diff", {action: "getDiff", a: previousStatementText, b: statementText}, function (result) {
|
||
|
if (result["success"] === "true") {
|
||
|
Codeforces.facebox(".diff-popup", "//codeforces.org/s/34323");
|
||
|
$("#facebox .diff-popup").html(result["diff"]);
|
||
|
}
|
||
|
}, "json");
|
||
|
});
|
||
|
}
|
||
|
} else {
|
||
|
Codeforces.putToStorageTtl(uuid, statementText, 6 * 60 * 60);
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
</script>
|
||
|
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
$(document).ready(function () {
|
||
|
|
||
|
function endsWith(string, suffix) {
|
||
|
return string.indexOf(suffix, string.length - suffix.length) !== -1;
|
||
|
}
|
||
|
|
||
|
const inputFileDiv = $("div.input-file");
|
||
|
const inputFile = inputFileDiv.text();
|
||
|
const outputFileDiv = $("div.output-file");
|
||
|
const outputFile = outputFileDiv.text();
|
||
|
|
||
|
|
||
|
if (!endsWith(inputFile, "standard input")
|
||
|
&& !endsWith(inputFile, "standard input")) {
|
||
|
inputFileDiv.attr("style", "font-weight: bold");
|
||
|
}
|
||
|
|
||
|
if (!endsWith(outputFile, "standard output")
|
||
|
&& !endsWith(outputFile, "standard output")) {
|
||
|
outputFileDiv.attr("style", "font-weight: bold");
|
||
|
}
|
||
|
|
||
|
const titleDiv = $("div.header div.title");
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
});
|
||
|
</script>
|
||
|
</div>
|
||
|
<div
|
||
|
style="margin-bottom: 2em;"
|
||
|
>
|
||
|
|
||
|
|
||
|
<div class="problemindexholder" problemindex="F" data-uuid="ps_f7caaed421f0120e29e108e2e37b2d940feea2ff">
|
||
|
<div style="display: none; margin:1em 0;text-align: center; position: relative;" class="alert alert-info diff-notifier">
|
||
|
<div>The problem statement has recently been changed. <a class="view-changes" href="#">View the changes.</a></div>
|
||
|
<span class="diff-notifier-close" style="position: absolute; top: 0.2em; right: 0.3em; cursor: pointer; font-size: 1.4em;">×</span>
|
||
|
</div>
|
||
|
<div class="ttypography"><div class="problem-statement"><div class="header"><div class="title">F. Maximum Balanced Circle</div><div class="time-limit"><div class="property-title">time limit per test</div>2 seconds</div><div class="memory-limit"><div class="property-title">memory limit per test</div>256 megabytes</div><div class="input-file"><div class="property-title">input</div>standard input</div><div class="output-file"><div class="property-title">output</div>standard output</div></div><div><p>There are $$$n$$$ people in a row. The height of the $$$i$$$-th person is $$$a_i$$$. You can choose <span class="tex-font-style-bf">any</span> subset of these people and try to arrange them into a <span class="tex-font-style-bf">balanced circle</span>.</p><p>A <span class="tex-font-style-bf">balanced circle</span> is such an order of people that the difference between heights of any adjacent people is no more than $$$1$$$. For example, let heights of chosen people be $$$[a_{i_1}, a_{i_2}, \dots, a_{i_k}]$$$, where $$$k$$$ is the number of people you choose. Then the condition $$$|a_{i_j} - a_{i_{j + 1}}| \le 1$$$ should be satisfied for all $$$j$$$ from $$$1$$$ to $$$k-1$$$ and the condition $$$|a_{i_1} - a_{i_k}| \le 1$$$ should be also satisfied. $$$|x|$$$ means the absolute value of $$$x$$$. It is obvious that the circle consisting of one person is balanced.</p><p>Your task is to choose the maximum number of people and construct a <span class="tex-font-style-bf">balanced circle</span> consisting of all chosen people. It is obvious that the circle consisting of one person is balanced so the answer always exists.</p></div><div class="input-specification"><div class="section-title">Input</div><p>The first line of the input contains one integer $$$n$$$ ($$$1 \le n \le 2 \cdot 10^5$$$) — the number of people.</p><p>The second line of the input contains $$$n$$$ integers $$$a_1, a_2, \dots, a_n$$$ ($$$1 \le a_i \le 2 \cdot 10^5$$$), where $$$a_i$$$ is the height of the $$$i$$$-th person.</p></div><div class="output-specification"><div class="section-title">Output</div><p>In the first line of the output print $$$k$$$ — the number of people in the maximum <span class="tex-font-style-bf">balanced circle</span>.</p><p>In the second line print $$$k$$$ integers $$$res_1, res_2, \dots, res_k$$$, where $$$res_j$$$ is the <span class="tex-font-style-bf">height</span> of the $$$j$$$-th person in the maximum <span class="tex-font-style-bf">balanced circle</span>. The condition $$$|res_{j} - res_{j + 1}| \le 1$$$ should be satisfied for all $$$j$$$ from $$$1$$$ to $$$k-1$$$ and the condition $$$|res_{1} - res_{k}| \le 1$$$ should be also satisfied.</p></div><div class="sample-tests"><div class="section-title">Examples</div><div class="sample-test"><div class="input"><div class="title">Input</div><pre>7
|
||
|
4 3 5 1 2 2 1
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>5
|
||
|
2 1 1 2 3
|
||
|
</pre></div><div class="input"><div class="title">Input</div><pre>5
|
||
|
3 7 5 1 5
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>2
|
||
|
5 5
|
||
|
</pre></div><div class="input"><div class="title">Input</div><pre>3
|
||
|
5 1 4
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>2
|
||
|
4 5
|
||
|
</pre></div><div class="input"><div class="title">Input</div><pre>7
|
||
|
2 2 3 2 1 2 2
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>7
|
||
|
1 2 2 2 2 3 2
|
||
|
</pre></div></div></div></div><p> </p></div>
|
||
|
</div>
|
||
|
|
||
|
<script>
|
||
|
$(function () {
|
||
|
Codeforces.addMathJaxListener(function () {
|
||
|
let $problem = $("div[problemindex=F]");
|
||
|
let uuid = $problem.attr("data-uuid");
|
||
|
let statementText = convertStatementToText($problem.find(".ttypography").get(0));
|
||
|
|
||
|
let previousStatementText = Codeforces.getFromStorage(uuid);
|
||
|
if (previousStatementText) {
|
||
|
if (previousStatementText !== statementText) {
|
||
|
$problem.find(".diff-notifier").show();
|
||
|
|
||
|
$problem.find(".diff-notifier-close").click(function() {
|
||
|
Codeforces.putToStorageTtl(uuid, statementText, 6 * 60 * 60);
|
||
|
$problem.find(".diff-notifier").hide();
|
||
|
});
|
||
|
|
||
|
$problem.find("a.view-changes").click(function() {
|
||
|
$.post("/data/diff", {action: "getDiff", a: previousStatementText, b: statementText}, function (result) {
|
||
|
if (result["success"] === "true") {
|
||
|
Codeforces.facebox(".diff-popup", "//codeforces.org/s/34323");
|
||
|
$("#facebox .diff-popup").html(result["diff"]);
|
||
|
}
|
||
|
}, "json");
|
||
|
});
|
||
|
}
|
||
|
} else {
|
||
|
Codeforces.putToStorageTtl(uuid, statementText, 6 * 60 * 60);
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
</script>
|
||
|
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
$(document).ready(function () {
|
||
|
|
||
|
function endsWith(string, suffix) {
|
||
|
return string.indexOf(suffix, string.length - suffix.length) !== -1;
|
||
|
}
|
||
|
|
||
|
const inputFileDiv = $("div.input-file");
|
||
|
const inputFile = inputFileDiv.text();
|
||
|
const outputFileDiv = $("div.output-file");
|
||
|
const outputFile = outputFileDiv.text();
|
||
|
|
||
|
|
||
|
if (!endsWith(inputFile, "standard input")
|
||
|
&& !endsWith(inputFile, "standard input")) {
|
||
|
inputFileDiv.attr("style", "font-weight: bold");
|
||
|
}
|
||
|
|
||
|
if (!endsWith(outputFile, "standard output")
|
||
|
&& !endsWith(outputFile, "standard output")) {
|
||
|
outputFileDiv.attr("style", "font-weight: bold");
|
||
|
}
|
||
|
|
||
|
const titleDiv = $("div.header div.title");
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
});
|
||
|
</script>
|
||
|
</div>
|
||
|
<div
|
||
|
style="margin-bottom: 1em;"
|
||
|
>
|
||
|
|
||
|
|
||
|
<div class="problemindexholder" problemindex="G" data-uuid="ps_ddb7f5a2e39aee1acb00be7e0ba80d7a08c5197f">
|
||
|
<div style="display: none; margin:1em 0;text-align: center; position: relative;" class="alert alert-info diff-notifier">
|
||
|
<div>The problem statement has recently been changed. <a class="view-changes" href="#">View the changes.</a></div>
|
||
|
<span class="diff-notifier-close" style="position: absolute; top: 0.2em; right: 0.3em; cursor: pointer; font-size: 1.4em;">×</span>
|
||
|
</div>
|
||
|
<div class="ttypography"><div class="problem-statement"><div class="header"><div class="title">G. Inverse of Rows and Columns</div><div class="time-limit"><div class="property-title">time limit per test</div>2 seconds</div><div class="memory-limit"><div class="property-title">memory limit per test</div>256 megabytes</div><div class="input-file"><div class="property-title">input</div>standard input</div><div class="output-file"><div class="property-title">output</div>standard output</div></div><div><p>You are given a binary matrix $$$a$$$ of size $$$n \times m$$$. A binary matrix is a matrix where each element is either $$$0$$$ or $$$1$$$.</p><p>You may perform some (possibly zero) operations with this matrix. During each operation you can inverse the row of this matrix or a column of this matrix. Formally, inverting a row is changing all values in this row to the opposite ($$$0$$$ to $$$1$$$, $$$1$$$ to $$$0$$$). Inverting a column is changing all values in this column to the opposite.</p><p>Your task is to sort the initial matrix by some sequence of such operations. The matrix is considered <span class="tex-font-style-bf">sorted</span> if the array $$$[a_{1, 1}, a_{1, 2}, \dots, a_{1, m}, a_{2, 1}, a_{2, 2}, \dots, a_{2, m}, \dots, a_{n, m - 1}, a_{n, m}]$$$ is sorted <span class="tex-font-style-it">in non-descending order</span>.</p></div><div class="input-specification"><div class="section-title">Input</div><p>The first line of the input contains two integers $$$n$$$ and $$$m$$$ ($$$1 \le n, m \le 200$$$) — the number of rows and the number of columns in the matrix.</p><p>The next $$$n$$$ lines contain $$$m$$$ integers each. The $$$j$$$-th element in the $$$i$$$-th line is $$$a_{i, j}$$$ ($$$0 \le a_{i, j} \le 1$$$) — the element of $$$a$$$ at position $$$(i, j)$$$.</p></div><div class="output-specification"><div class="section-title">Output</div><p>If it is impossible to obtain a <span class="tex-font-style-bf">sorted</span> matrix, print "<span class="tex-font-style-tt">NO</span>" in the first line.</p><p>Otherwise print "<span class="tex-font-style-tt">YES</span>" in the first line. In the second line print a string $$$r$$$ of length $$$n$$$. The $$$i$$$-th character $$$r_i$$$ of this string should be '<span class="tex-font-style-tt">1</span>' if the $$$i$$$-th row of the matrix is inverted and '<span class="tex-font-style-tt">0</span>' otherwise. In the third line print a string $$$c$$$ of length $$$m$$$. The $$$j$$$-th character $$$c_j$$$ of this string should be '<span class="tex-font-style-tt">1</span>' if the $$$j$$$-th column of the matrix is inverted and '<span class="tex-font-style-tt">0</span>' otherwise. If there are multiple answers, you can print any.</p></div><div class="sample-tests"><div class="section-title">Examples</div><div class="sample-test"><div class="input"><div class="title">Input</div><pre>2 2
|
||
|
1 1
|
||
|
0 1
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>YES
|
||
|
00
|
||
|
10
|
||
|
</pre></div><div class="input"><div class="title">Input</div><pre>3 4
|
||
|
0 0 0 1
|
||
|
0 0 0 0
|
||
|
1 1 1 1
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>YES
|
||
|
010
|
||
|
0000
|
||
|
</pre></div><div class="input"><div class="title">Input</div><pre>3 3
|
||
|
0 0 0
|
||
|
1 0 1
|
||
|
1 1 0
|
||
|
</pre></div><div class="output"><div class="title">Output</div><pre>NO
|
||
|
</pre></div></div></div></div><p> </p></div>
|
||
|
</div>
|
||
|
|
||
|
<script>
|
||
|
$(function () {
|
||
|
Codeforces.addMathJaxListener(function () {
|
||
|
let $problem = $("div[problemindex=G]");
|
||
|
let uuid = $problem.attr("data-uuid");
|
||
|
let statementText = convertStatementToText($problem.find(".ttypography").get(0));
|
||
|
|
||
|
let previousStatementText = Codeforces.getFromStorage(uuid);
|
||
|
if (previousStatementText) {
|
||
|
if (previousStatementText !== statementText) {
|
||
|
$problem.find(".diff-notifier").show();
|
||
|
|
||
|
$problem.find(".diff-notifier-close").click(function() {
|
||
|
Codeforces.putToStorageTtl(uuid, statementText, 6 * 60 * 60);
|
||
|
$problem.find(".diff-notifier").hide();
|
||
|
});
|
||
|
|
||
|
$problem.find("a.view-changes").click(function() {
|
||
|
$.post("/data/diff", {action: "getDiff", a: previousStatementText, b: statementText}, function (result) {
|
||
|
if (result["success"] === "true") {
|
||
|
Codeforces.facebox(".diff-popup", "//codeforces.org/s/34323");
|
||
|
$("#facebox .diff-popup").html(result["diff"]);
|
||
|
}
|
||
|
}, "json");
|
||
|
});
|
||
|
}
|
||
|
} else {
|
||
|
Codeforces.putToStorageTtl(uuid, statementText, 6 * 60 * 60);
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
</script>
|
||
|
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
$(document).ready(function () {
|
||
|
|
||
|
function endsWith(string, suffix) {
|
||
|
return string.indexOf(suffix, string.length - suffix.length) !== -1;
|
||
|
}
|
||
|
|
||
|
const inputFileDiv = $("div.input-file");
|
||
|
const inputFile = inputFileDiv.text();
|
||
|
const outputFileDiv = $("div.output-file");
|
||
|
const outputFile = outputFileDiv.text();
|
||
|
|
||
|
|
||
|
if (!endsWith(inputFile, "standard input")
|
||
|
&& !endsWith(inputFile, "standard input")) {
|
||
|
inputFileDiv.attr("style", "font-weight: bold");
|
||
|
}
|
||
|
|
||
|
if (!endsWith(outputFile, "standard output")
|
||
|
&& !endsWith(outputFile, "standard output")) {
|
||
|
outputFileDiv.attr("style", "font-weight: bold");
|
||
|
}
|
||
|
|
||
|
const titleDiv = $("div.header div.title");
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
});
|
||
|
</script>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
<div id="footer">
|
||
|
<div><a href="https://codeforces.com/">Codeforces</a> (c) Copyright 2010-2023 Mike Mirzayanov</div>
|
||
|
<div>The only programming contests Web 2.0 platform</div>
|
||
|
|
||
|
</div>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<script type="application/javascript">
|
||
|
if ('serviceWorker' in navigator && 'fetch' in window && 'caches' in window) {
|
||
|
navigator.serviceWorker.register('/service-worker-34323.js')
|
||
|
.then(function (registration) {
|
||
|
console.log('Service worker registered: ', registration);
|
||
|
})
|
||
|
.catch(function (error) {
|
||
|
console.log('Registration failed: ', error);
|
||
|
});
|
||
|
}
|
||
|
</script>
|
||
|
<script>(function(){var js = "window['__CF$cv$params']={r:'7e437631ff332794',m:'B74i8bohNHHurYHCXdPUFS6xj9rq3ttAyTPgbgrbq3w-1688936062-0-AafpA/vikFERm1KxX3lR94gW9A45BV66Seam48AtztLV'};_cpo=document.createElement('script');_cpo.nonce='',_cpo.src='/cdn-cgi/challenge-platform/scripts/invisible.js',document.getElementsByTagName('head')[0].appendChild(_cpo);";var _0xh = document.createElement('iframe');_0xh.height = 1;_0xh.width = 1;_0xh.style.position = 'absolute';_0xh.style.top = 0;_0xh.style.left = 0;_0xh.style.border = 'none';_0xh.style.visibility = 'hidden';document.body.appendChild(_0xh);function handler() {var _0xi = _0xh.contentDocument || _0xh.contentWindow.document;if (_0xi) {var _0xj = _0xi.createElement('script');_0xj.nonce = '';_0xj.innerHTML = js;_0xi.getElementsByTagName('head')[0].appendChild(_0xj);}}if (document.readyState !== 'loading') {handler();} else if (window.addEventListener) {document.addEventListener('DOMContentLoaded', handler);} else {var prev = document.onreadystatechange || function () {};document.onreadystatechange = function (e) {prev(e);if (document.readyState !== 'loading') {document.onreadystatechange = prev;handler();}};}})();</script></body>
|
||
|
</html>
|