mirror of
https://gitlab.com/mfocko/Codeforces.git
synced 2024-12-30 16:21:28 +01:00
116(A,cpp): solve “Tram”
Signed-off-by: Matej Focko <mfocko@redhat.com> diff --git a/116/a.cpp b/116/a.cpp new file mode 100644 index 0000000..30abd15 --- /dev/null +++ b/116/a.cpp @@ -0,0 +1,108 @@ +#include <algorithm> +#include <cassert> +#include <cctype> +#include <cstdint> +#include <functional> +#include <iostream> +#include <optional> +#include <sstream> +#include <string> +#include <vector> + +namespace helpers { + +using namespace std; + +long pow(long base, long exp) { + if (exp == 0) return 1; + long half = pow(base, exp / 2); + if (exp % 2 == 0) return half * half; + return half * half * base; +} + +#define LOOP(n) for (auto i = 0; i < n; ++i) + +template <typename T> +inline void answer(const T& ans) { + cout << ans << "\n"; +} + +inline void yes() { cout << "YES\n"; } +inline void no() { cout << "NO\n"; } + +} // namespace helpers + +namespace { + +using namespace std; +using namespace helpers; + +struct stop { + int exit; + int entry; +}; + +int min_capacity(const std::vector<stop>& stops) { + int current = 0; + int min_cap = 0; + + for (const auto& s : stops) { + current += (s.entry - s.exit); + min_cap = max(min_cap, current); + } + + return min_cap; +} + +void solve() { + int N; + cin >> N; + + std::vector<stop> stops; + LOOP(N) { + int exit, entry; + cin >> exit >> entry; + + stops.push_back({exit, entry}); + } + + answer(min_capacity(stops)); +} + +} // namespace + +// for single test case, comment out for ‹N› test cases +#define SINGLE + +#ifdef TEST + +#include "../.common/cpp/catch_amalgamated.hpp" + +TEST_CASE("examples") { + CHECK(min_capacity(std::vector<stop>{{0, 3}, {2, 5}, {4, 2}, {4, 0}}) == 6); +} + +#else + +int main(void) { + +#ifdef SINGLE + + solve(); + +#else + + // for multiple test cases + int N; + std::cin >> N >> std::ws; + + for (auto i = 0; i < N; ++i) { + solve(); + } + +#endif + + return 0; +} + +#endif diff --git a/116/index.html b/116/index.html new file mode 100644 index 0000000..5a103b3 --- /dev/null +++ b/116/index.html @@ -0,0 +1,1035 @@ + +<!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="4a021b43513d52614911baa499dae069"/> + <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/62837/css/font-awesome.min.css" type="text/css" charset="utf-8" /> + <link rel="stylesheet" href="//codeforces.org/s/62837/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/62837/css/prettify.css" type="text/css" charset="utf-8" /> + <link rel="stylesheet" href="//codeforces.org/s/62837/css/clear.css" type="text/css" charset="utf-8" /> + <link rel="stylesheet" href="//codeforces.org/s/62837/css/style.css" type="text/css" charset="utf-8" /> + <link rel="stylesheet" href="//codeforces.org/s/62837/css/ttypography.css" type="text/css" charset="utf-8" /> + <link rel="stylesheet" href="//codeforces.org/s/62837/css/problem-statement.css" type="text/css" charset="utf-8" /> + <link rel="stylesheet" href="//codeforces.org/s/62837/css/second-level-menu.css" type="text/css" charset="utf-8" /> + <link rel="stylesheet" href="//codeforces.org/s/62837/css/roundbox.css" type="text/css" charset="utf-8" /> + <link rel="stylesheet" href="//codeforces.org/s/62837/css/datatable.css" type="text/css" charset="utf-8" /> + <link rel="stylesheet" href="//codeforces.org/s/62837/css/table-form.css" type="text/css" charset="utf-8" /> + <link rel="stylesheet" href="//codeforces.org/s/62837/css/topic.css" type="text/css" charset="utf-8" /> + <link rel="stylesheet" href="//codeforces.org/s/62837/css/jquery.jgrowl.css" type="text/css" charset="utf-8" /> + <link rel="stylesheet" href="//codeforces.org/s/62837/css/facebox.css" type="text/css" charset="utf-8" /> + <link rel="stylesheet" href="//codeforces.org/s/62837/css/jquery.wysiwyg.css" type="text/css" charset="utf-8" /> + <link rel="stylesheet" href="//codeforces.org/s/62837/css/jquery.autocomplete.css" type="text/css" charset="utf-8" /> + <link rel="stylesheet" href="//codeforces.org/s/62837/css/codeforces.datepick.css" type="text/css" charset="utf-8" /> + <link rel="stylesheet" href="//codeforces.org/s/62837/css/colorbox.css" type="text/css" charset="utf-8" /> + <link rel="stylesheet" href="//codeforces.org/s/62837/css/jquery.drafts.css" type="text/css" charset="utf-8" /> + <link rel="stylesheet" href="//codeforces.org/s/62837/css/community.css" type="text/css" charset="utf-8" /> + <link rel="stylesheet" href="//codeforces.org/s/62837/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/62837/js/prettify/prettify.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/moment-with-locales.min.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/pushstream.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/jquery.easing.min.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/jquery.lavalamp.min.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/jquery.jgrowl.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/jquery.swipe.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/jquery.hotkeys.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/facebox.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/jquery.wysiwyg.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/controls/wysiwyg.colorpicker.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/controls/wysiwyg.table.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/controls/wysiwyg.image.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/controls/wysiwyg.link.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/jquery.autocomplete.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/jquery.datepick.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/jquery.ie6blocker.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/jquery.colorbox-min.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/jquery.ba-bbq.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/jquery.drafts.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/clipboard.min.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/autosize.min.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/sjcl.js"></script> + <script type="text/javascript" src="/scripts/7524722dd28773e2987937a750cd80cd/en/codeforces-options.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/codeforces.js?v=20160131"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/EventCatcher.js?v=20160131"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/preparedVerdictFormats-en.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/js/confetti.min.js"></script> + <!--/CombineResourcesFilter--> + + <link rel="stylesheet" href="//codeforces.org/s/62837/markitup/skins/markitup/style.css" type="text/css" charset="utf-8" /> + <link rel="stylesheet" href="//codeforces.org/s/62837/markitup/sets/markdown/style.css" type="text/css" charset="utf-8" /> + + + <script type="text/javascript" src="//codeforces.org/s/62837/markitup/jquery.markitup.js"></script> + <script type="text/javascript" src="//codeforces.org/s/62837/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='4a021b43513d52614911baa499dae069'> </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/14919/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/14919/images/flags/24/gb.png" title="In English" alt="In English"/></a> + <a href="?locale=ru"><img src="//codeforces.org/s/14919/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 Beta Round 87 (Div. 2 Only)</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_21378699aa609b10c0183f013e498f9d0b5ce144"> + <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. Tram</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>Linear Kingdom has exactly one tram line. It has <span class="tex-span"><i>n</i></span> stops, numbered from <span class="tex-span">1</span> to <span class="tex-span"><i>n</i></span> in the order of tram's movement. At the <span class="tex-span"><i>i</i></span>-th stop <span class="tex-span"><i>a</i><sub class="lower-index"><i>i</i></sub></span> passengers exit the tram, while <span class="tex-span"><i>b</i><sub class="lower-index"><i>i</i></sub></span> passengers enter it. The tram is empty before it arrives at the first stop. Also, when the tram arrives at the last stop, all passengers exit so that it becomes empty.</p><p>Your task is to calculate the tram's minimum capacity such that the number of people inside the tram at any time never exceeds this capacity. Note that at each stop all exiting passengers exit <span class="tex-font-style-bf">before</span> any entering passenger enters the tram.</p></div><div class="input-specification"><div class="section-title">Input</div><p>The first line contains a single number <span class="tex-span"><i>n</i></span> (<span class="tex-span">2 ≤ <i>n</i> ≤ 1000</span>) — the number of the tram's stops. </p><p>Then <span class="tex-span"><i>n</i></span> lines follow, each contains two integers <span class="tex-span"><i>a</i><sub class="lower-index"><i>i</i></sub></span> and <span class="tex-span"><i>b</i><sub class="lower-index"><i>i</i></sub></span> (<span class="tex-span">0 ≤ <i>a</i><sub class="lower-index"><i>i</i></sub>, <i>b</i><sub class="lower-index"><i>i</i></sub> ≤ 1000</span>) — the number of passengers that exits the tram at the <span class="tex-span"><i>i</i></span>-th stop, and the number of passengers that enter the tram at the <span class="tex-span"><i>i</i></span>-th stop. The stops are given from the first to the last stop in the order of tram's movement.</p><ul> <li> The number of people who exit at a given stop does not exceed the total number of people in the tram immediately before it arrives at the stop. More formally, <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/eb1e20fd58cc4373d8f42eb7e743d3ea232d1a19.png" style="max-width: 100.0%;max-height: 100.0%;" />. This particularly means that <span class="tex-span"><i>a</i><sub class="lower-index">1</sub> = 0</span>. </li><li> At the last stop, <span class="tex-font-style-bf">all</span> the passengers exit the tram and it becomes empty. More formally, <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/8cbe43ecd252bf7d670f9a3956cbe50263d2f09b.png" style="max-width: 100.0%;max-height: 100.0%;" />. </li><li> No passenger will enter the train at the last stop. That is, <span class="tex-span"><i>b</i><sub class="lower-index"><i>n</i></sub> = 0</span>. </li></ul></div><div class="output-specification"><div class="section-title">Output</div><p>Print a single integer denoting the minimum possible capacity of the tram (0 is allowed).</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<br />0 3<br />2 5<br />4 2<br />4 0<br /></pre></div><div class="output"><div class="title">Output</div><pre>6<br /></pre></div></div></div><div class="note"><div class="section-title">Note</div><p>For the first example, a capacity of 6 is sufficient: </p><ul> <li> At the first stop, the number of passengers inside the tram before arriving is 0. Then, 3 passengers enter the tram, and the number of passengers inside the tram becomes 3. </li><li> At the second stop, 2 passengers exit the tram (1 passenger remains inside). Then, 5 passengers enter the tram. There are 6 passengers inside the tram now. </li><li> At the third stop, 4 passengers exit the tram (2 passengers remain inside). Then, 2 passengers enter the tram. There are 4 passengers inside the tram now. </li><li> Finally, all the remaining passengers inside the tram exit the tram at the last stop. There are no passenger inside the tram now, which is in line with the constraints. </li></ul><p>Since the number of passengers inside the tram never exceeds 6, a capacity of 6 is sufficient. Furthermore it is not possible for the tram to have a capacity less than 6. Hence, 6 is the correct answer.</p></div></div></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/14919"); + $("#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_b21d6aef35d45599077ddc1d0c2196ac780164ee"> + <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. Little Pigs and Wolves</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>Once upon a time there were several little pigs and several wolves on a two-dimensional grid of size <span class="tex-span"><i>n</i> × <i>m</i></span>. Each cell in this grid was either empty, containing one little pig, or containing one wolf.</p><p>A little pig and a wolf are adjacent if the cells that they are located at share a side. The little pigs are afraid of wolves, so there will be at most one wolf adjacent to each little pig. But each wolf may be adjacent to any number of little pigs.</p><p>They have been living peacefully for several years. But today the wolves got hungry. One by one, each wolf will choose one of the little pigs adjacent to it (if any), and eats the poor little pig. This process is not repeated. That is, each wolf will get to eat at most one little pig. Once a little pig gets eaten, it disappears and cannot be eaten by any other wolf.</p><p>What is the maximum number of little pigs that may be eaten by the wolves?</p></div><div class="input-specification"><div class="section-title">Input</div><p>The first line contains integers <span class="tex-span"><i>n</i></span> and <span class="tex-span"><i>m</i></span> (<span class="tex-span">1 ≤ <i>n</i>, <i>m</i> ≤ 10</span>) which denotes the number of rows and columns in our two-dimensional grid, respectively. Then follow <span class="tex-span"><i>n</i></span> lines containing <span class="tex-span"><i>m</i></span> characters each — that is the grid description. "<span class="tex-font-style-tt">.</span>" means that this cell is empty. "<span class="tex-font-style-tt">P</span>" means that this cell contains a little pig. "<span class="tex-font-style-tt">W</span>" means that this cell contains a wolf. </p><p>It is guaranteed that there will be at most one wolf adjacent to any little pig.</p></div><div class="output-specification"><div class="section-title">Output</div><p>Print a single number — the maximal number of little pigs that may be eaten by the wolves.</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 3<br />PPW<br />W.P<br /></pre></div><div class="output"><div class="title">Output</div><pre>2<br /></pre></div><div class="input"><div class="title">Input</div><pre>3 3<br />P.W<br />.P.<br />W.P<br /></pre></div><div class="output"><div class="title">Output</div><pre>0<br /></pre></div></div></div><div class="note"><div class="section-title">Note</div><p>In the first example, one possible scenario in which two little pigs get eaten by the wolves is as follows. </p><center> <img class="tex-graphics" src="https://espresso.codeforces.com/8b2d8a71336740ed4c66ef13db59d065aaacdb99.png" style="max-width: 100.0%;max-height: 100.0%;" /> </center></div></div></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/14919"); + $("#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="C" data-uuid="ps_225be58b9ac560b49a959e0aa852089b16e5a677"> + <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">C. Party</div><div class="time-limit"><div class="property-title">time limit per test</div>3 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>A company has <span class="tex-span"><i>n</i></span> employees numbered from <span class="tex-span">1</span> to <span class="tex-span"><i>n</i></span>. Each employee either has no immediate manager or exactly one immediate manager, who is another employee with a different number. An employee <span class="tex-span"><i>A</i></span> is said to be the <span class="tex-font-style-underline">superior</span> of another employee <span class="tex-span"><i>B</i></span> if at least one of the following is true:</p><ul> <li> Employee <span class="tex-span"><i>A</i></span> is the immediate manager of employee <span class="tex-span"><i>B</i></span> </li><li> Employee <span class="tex-span"><i>B</i></span> has an immediate manager employee <span class="tex-span"><i>C</i></span> such that employee <span class="tex-span"><i>A</i></span> is the superior of employee <span class="tex-span"><i>C</i></span>. </li></ul><p>The company will not have a managerial cycle. That is, there will not exist an employee who is the superior of his/her own immediate manager.</p><p>Today the company is going to arrange a party. This involves dividing all <span class="tex-span"><i>n</i></span> employees into several groups: every employee must belong to exactly one group. Furthermore, within any single group, there must not be two employees <span class="tex-span"><i>A</i></span> and <span class="tex-span"><i>B</i></span> such that <span class="tex-span"><i>A</i></span> is the superior of <span class="tex-span"><i>B</i></span>.</p><p>What is the minimum number of groups that must be formed?</p></div><div class="input-specification"><div class="section-title">Input</div><p>The first line contains integer <span class="tex-span"><i>n</i></span> (<span class="tex-span">1 ≤ <i>n</i> ≤ 2000</span>) — the number of employees.</p><p>The next <span class="tex-span"><i>n</i></span> lines contain the integers <span class="tex-span"><i>p</i><sub class="lower-index"><i>i</i></sub></span> (<span class="tex-span">1 ≤ <i>p</i><sub class="lower-index"><i>i</i></sub> ≤ <i>n</i></span> or <span class="tex-span"><i>p</i><sub class="lower-index"><i>i</i></sub> = </span>-1). Every <span class="tex-span"><i>p</i><sub class="lower-index"><i>i</i></sub></span> denotes the immediate manager for the <span class="tex-span"><i>i</i></span>-th employee. If <span class="tex-span"><i>p</i><sub class="lower-index"><i>i</i></sub></span> is -1, that means that the <span class="tex-span"><i>i</i></span>-th employee does not have an immediate manager. </p><p>It is guaranteed, that no employee will be the immediate manager of him/herself (<span class="tex-span"><i>p</i><sub class="lower-index"><i>i</i></sub> ≠ <i>i</i></span>). Also, there will be no managerial cycles.</p></div><div class="output-specification"><div class="section-title">Output</div><p>Print a single integer denoting the minimum number of groups that will be formed in the party.</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<br />-1<br />1<br />2<br />1<br />-1<br /></pre></div><div class="output"><div class="title">Output</div><pre>3<br /></pre></div></div></div><div class="note"><div class="section-title">Note</div><p>For the first example, three groups are sufficient, for example: </p><ul> <li> Employee 1 </li><li> Employees 2 and 4 </li><li> Employees 3 and 5 </li></ul></div></div></div> +</div> + + <script> + $(function () { + Codeforces.addMathJaxListener(function () { + let $problem = $("div[problemindex=C]"); + 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/14919"); + $("#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_5c63b5619c4dbbe57aa53f890f5ccafd9fc96932"> + <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. Lawnmower</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 have a garden consisting entirely of grass and weeds. Your garden is described by an <span class="tex-span"><i>n</i> × <i>m</i></span> grid, with rows numbered <span class="tex-span">1</span> to <span class="tex-span"><i>n</i></span> from top to bottom, and columns <span class="tex-span">1</span> to <span class="tex-span"><i>m</i></span> from left to right. Each cell is identified by a pair <span class="tex-span">(<i>r</i>, <i>c</i>)</span> which means that the cell is located at row <span class="tex-span"><i>r</i></span> and column <span class="tex-span"><i>c</i></span>. Each cell may contain either grass or weeds. For example, a <span class="tex-span">4 × 5</span> garden may look as follows (empty cells denote grass):</p><center> <img class="tex-graphics" src="https://espresso.codeforces.com/50eb313baaf29ad5684e742751bccc46a2b5445b.png" style="max-width: 100.0%;max-height: 100.0%;" /> </center><p>You have a land-mower with you to mow all the weeds. Initially, you are standing with your lawnmower at the top-left corner of the garden. That is, at cell <span class="tex-span">(1, 1)</span>. At any moment of time you are facing a certain direction — either left or right. And initially, you face right.</p><p>In one move you can do either one of these:</p><p>1) Move one cell in the direction that you are facing.</p><ul><p> </p><li> if you are facing right: move from cell <span class="tex-span">(<i>r</i>, <i>c</i>)</span> to cell <span class="tex-span">(<i>r</i>, <i>c</i> + 1)</span><p> </p><center> <img class="tex-graphics" src="https://espresso.codeforces.com/c276e1bed94be3719d1c66b91ee47c682881a1a1.png" style="max-width: 100.0%;max-height: 100.0%;" /> </center><p> </p></li><li> if you are facing left: move from cell <span class="tex-span">(<i>r</i>, <i>c</i>)</span> to cell <span class="tex-span">(<i>r</i>, <i>c</i> - 1)</span><p> </p><center> <img class="tex-graphics" src="https://espresso.codeforces.com/db006bc9e0faafd4c87d6af4370af935b196c207.png" style="max-width: 100.0%;max-height: 100.0%;" /> </center></li></ul> 2) Move one cell down (that is, from cell <span class="tex-span">(<i>r</i>, <i>c</i>)</span> to cell <span class="tex-span">(<i>r</i> + 1, <i>c</i>)</span>), and change your direction to the opposite one.<ul><p> </p><li> if you were facing right previously, you will face left<p> </p><center> <img class="tex-graphics" src="https://espresso.codeforces.com/6419636d10a92c8e4e1a225909f27a8d288a9e6a.png" style="max-width: 100.0%;max-height: 100.0%;" /> </center><p> </p></li><li> if you were facing left previously, you will face right<p> </p><center> <img class="tex-graphics" src="https://espresso.codeforces.com/8235e5e624726e6623d22e8e7de53a91868abfac.png" style="max-width: 100.0%;max-height: 100.0%;" /> </center> </li></ul><p>You are not allowed to leave the garden. Weeds will be mowed if you and your lawnmower are standing at the cell containing the weeds (your direction doesn't matter). This action isn't counted as a move.</p><p>What is the minimum number of moves required to mow all the weeds?</p></div><div class="input-specification"><div class="section-title">Input</div><p>The first line contains two integers <span class="tex-span"><i>n</i></span> and <span class="tex-span"><i>m</i></span> (<span class="tex-span">1 ≤ <i>n</i>, <i>m</i> ≤ 150</span>) — the number of rows and columns respectively. Then follow <span class="tex-span"><i>n</i></span> lines containing <span class="tex-span"><i>m</i></span> characters each — the content of the grid. "<span class="tex-font-style-tt">G</span>" means that this cell contains grass. "<span class="tex-font-style-tt">W</span>" means that this cell contains weeds. </p><p>It is guaranteed that the top-left corner of the grid will contain grass.</p></div><div class="output-specification"><div class="section-title">Output</div><p>Print a single number — the minimum number of moves required to mow all the weeds.</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 5<br />GWGGW<br />GGWGG<br />GWGGG<br />WGGGG<br /></pre></div><div class="output"><div class="title">Output</div><pre>11<br /></pre></div><div class="input"><div class="title">Input</div><pre>3 3<br />GWW<br />WWW<br />WWG<br /></pre></div><div class="output"><div class="title">Output</div><pre>7<br /></pre></div><div class="input"><div class="title">Input</div><pre>1 1<br />G<br /></pre></div><div class="output"><div class="title">Output</div><pre>0<br /></pre></div></div></div><div class="note"><div class="section-title">Note</div><p>For the first example, this is the picture of the initial state of the grid:</p><center> <img class="tex-graphics" src="https://espresso.codeforces.com/7d962d3c57565b1f285036e43348e3382d156169.png" style="max-width: 100.0%;max-height: 100.0%;" /> </center><p>A possible solution is by mowing the weeds as illustrated below:</p><center> <img class="tex-graphics" src="https://espresso.codeforces.com/6f352e6c8e92492cca3507ca4252f53da66f4a4e.png" style="max-width: 100.0%;max-height: 100.0%;" /> </center></div></div></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/14919"); + $("#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="E" data-uuid="ps_553b7c457cd5b70892d2ed18e2478b9e45ee2855"> + <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. Plumber</div><div class="time-limit"><div class="property-title">time limit per test</div>3 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>Little John aspires to become a plumber! Today he has drawn a grid consisting of <span class="tex-span"><i>n</i></span> rows and <span class="tex-span"><i>m</i></span> columns, consisting of <span class="tex-span"><i>n</i> × <i>m</i></span> square cells.</p><p>In each cell he will draw a pipe segment. He can only draw four types of segments numbered from <span class="tex-span">1</span> to <span class="tex-span">4</span>, illustrated as follows:</p><center> <img class="tex-graphics" src="https://espresso.codeforces.com/fcfb2cc0f6b4d5dd758913f8ec0ffb75e2537626.png" style="max-width: 100.0%;max-height: 100.0%;" /> </center><p>Each pipe segment has two ends, illustrated by the arrows in the picture above. For example, segment <span class="tex-span">1</span> has ends at top and left side of it.</p><p>Little John considers the piping system to be leaking if there is at least one pipe segment inside the grid whose end is not connected to another pipe's end or to the border of the grid. The image below shows an example of leaking and non-leaking systems of size <span class="tex-span">1 × 2</span>.</p><center> <img class="tex-graphics" src="https://espresso.codeforces.com/a594e2ebc9562badc419e9ab0d9cd2d633f349ae.png" style="max-width: 100.0%;max-height: 100.0%;" /> </center><p>Now, you will be given the grid that has been partially filled by Little John. Each cell will either contain one of the four segments above, or be empty. Find the number of possible different non-leaking final systems after Little John finishes filling <span class="tex-font-style-bf">all</span> of the empty cells with pipe segments. Print this number modulo <span class="tex-span">1000003</span> (<span class="tex-span">10<sup class="upper-index">6</sup> + 3</span>).</p><p>Note that rotations or flipping of the grid are not allowed and so two configurations that are identical only when one of them has been rotated or flipped either horizontally or vertically are considered two different configurations.</p></div><div class="input-specification"><div class="section-title">Input</div><p>The first line will contain two single-space separated integers <span class="tex-span"><i>n</i></span> and <span class="tex-span"><i>m</i></span> (<span class="tex-span">1 ≤ <i>n</i>, <i>m</i>, <i>n</i>·<i>m</i> ≤ 5·10<sup class="upper-index">5</sup></span>) — the number of rows and columns respectively. Then <span class="tex-span"><i>n</i></span> lines follow, each contains exactly <span class="tex-span"><i>m</i></span> characters — the description of the grid. Each character describes a cell and is either one of these: </p><ul> <li> "<span class="tex-font-style-tt">1</span>" - "<span class="tex-font-style-tt">4</span>" — a pipe segment of one of four types as described above </li><li> "<span class="tex-font-style-tt">.</span>" — an empty cell </li></ul></div><div class="output-specification"><div class="section-title">Output</div><p>Print a single integer denoting the number of possible final non-leaking pipe systems modulo <span class="tex-span">1000003</span> (<span class="tex-span">10<sup class="upper-index">6</sup> + 3</span>). If there are no such configurations, print <span class="tex-span">0</span>.</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<br />13<br />..<br /></pre></div><div class="output"><div class="title">Output</div><pre>2<br /></pre></div><div class="input"><div class="title">Input</div><pre>3 1<br />1<br />4<br />.<br /></pre></div><div class="output"><div class="title">Output</div><pre>0<br /></pre></div><div class="input"><div class="title">Input</div><pre>2 2<br />3.<br />.1<br /></pre></div><div class="output"><div class="title">Output</div><pre>1<br /></pre></div></div></div><div class="note"><div class="section-title">Note</div><p>For the first example, the initial configuration of the grid is as follows. </p><center> <img class="tex-graphics" src="https://espresso.codeforces.com/c14a207fc0187825d452abc5f1a87ec5379b2680.png" style="max-width: 100.0%;max-height: 100.0%;" /> </center><p>The only two possible final non-leaking pipe configurations are as follows:</p><center> <img class="tex-graphics" src="https://espresso.codeforces.com/648283013db802bf02f0752ea7f9ef7690862b89.png" style="max-width: 100.0%;max-height: 100.0%;" /> </center><center> <img class="tex-graphics" src="https://espresso.codeforces.com/953c21a6a995b9db2a092bc26f81b7270aec7887.png" style="max-width: 100.0%;max-height: 100.0%;" /> </center><p>For the second example, the initial grid is already leaking, so there will be no final grid that is non-leaking.</p><p>For the final example, there's only one possible non-leaking final grid as follows.</p><center> <img class="tex-graphics" src="https://espresso.codeforces.com/799e3f21b4092831e14c01a445eaa6848dba1240.png" style="max-width: 100.0%;max-height: 100.0%;" /> </center></div></div></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/14919"); + $("#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-14919.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:'7e4a78f26c2bb37d',m:'k1nKrq34lS56Gr5zdoOLUqm8xCnJJG9p4c1WpSZUlVk-1689009575-0-ARasEf0O37IJc/ZRjxv7EhcBtzRq10YBQdBqwCGnRyFC'};_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>
This commit is contained in:
parent
7a2374a1c6
commit
30124b649f
2 changed files with 1143 additions and 0 deletions
108
116/a.cpp
Normal file
108
116/a.cpp
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
#include <algorithm>
|
||||||
|
#include <cassert>
|
||||||
|
#include <cctype>
|
||||||
|
#include <cstdint>
|
||||||
|
#include <functional>
|
||||||
|
#include <iostream>
|
||||||
|
#include <optional>
|
||||||
|
#include <sstream>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
namespace helpers {
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
long pow(long base, long exp) {
|
||||||
|
if (exp == 0) return 1;
|
||||||
|
long half = pow(base, exp / 2);
|
||||||
|
if (exp % 2 == 0) return half * half;
|
||||||
|
return half * half * base;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LOOP(n) for (auto i = 0; i < n; ++i)
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline void answer(const T& ans) {
|
||||||
|
cout << ans << "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void yes() { cout << "YES\n"; }
|
||||||
|
inline void no() { cout << "NO\n"; }
|
||||||
|
|
||||||
|
} // namespace helpers
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
using namespace helpers;
|
||||||
|
|
||||||
|
struct stop {
|
||||||
|
int exit;
|
||||||
|
int entry;
|
||||||
|
};
|
||||||
|
|
||||||
|
int min_capacity(const std::vector<stop>& stops) {
|
||||||
|
int current = 0;
|
||||||
|
int min_cap = 0;
|
||||||
|
|
||||||
|
for (const auto& s : stops) {
|
||||||
|
current += (s.entry - s.exit);
|
||||||
|
min_cap = max(min_cap, current);
|
||||||
|
}
|
||||||
|
|
||||||
|
return min_cap;
|
||||||
|
}
|
||||||
|
|
||||||
|
void solve() {
|
||||||
|
int N;
|
||||||
|
cin >> N;
|
||||||
|
|
||||||
|
std::vector<stop> stops;
|
||||||
|
LOOP(N) {
|
||||||
|
int exit, entry;
|
||||||
|
cin >> exit >> entry;
|
||||||
|
|
||||||
|
stops.push_back({exit, entry});
|
||||||
|
}
|
||||||
|
|
||||||
|
answer(min_capacity(stops));
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
// for single test case, comment out for ‹N› test cases
|
||||||
|
#define SINGLE
|
||||||
|
|
||||||
|
#ifdef TEST
|
||||||
|
|
||||||
|
#include "../.common/cpp/catch_amalgamated.hpp"
|
||||||
|
|
||||||
|
TEST_CASE("examples") {
|
||||||
|
CHECK(min_capacity(std::vector<stop>{{0, 3}, {2, 5}, {4, 2}, {4, 0}}) == 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
|
||||||
|
#ifdef SINGLE
|
||||||
|
|
||||||
|
solve();
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
// for multiple test cases
|
||||||
|
int N;
|
||||||
|
std::cin >> N >> std::ws;
|
||||||
|
|
||||||
|
for (auto i = 0; i < N; ++i) {
|
||||||
|
solve();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
1035
116/index.html
Normal file
1035
116/index.html
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue