<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Joi on 競プロメモ</title><link>https://goropikari.github.io/CompetitiveProgramming/tags/joi/</link><description>Recent content in Joi on 競プロメモ</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Sun, 25 Jan 2026 00:20:52 +0900</lastBuildDate><atom:link href="https://goropikari.github.io/CompetitiveProgramming/tags/joi/index.xml" rel="self" type="application/rss+xml"/><item><title>Joisc2007</title><link>https://goropikari.github.io/CompetitiveProgramming/joi/joisc2007/</link><pubDate>Sun, 25 Jan 2026 00:20:52 +0900</pubDate><guid>https://goropikari.github.io/CompetitiveProgramming/joi/joisc2007/</guid><description>&lt;p&gt;&lt;a href="https://atcoder.jp/contests/abcjoisc2007"&gt;https://atcoder.jp/contests/abcjoisc2007&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="score-得点-score"&gt;score. 得点 (Score)&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://atcoder.jp/contests/joisc2007/tasks/joisc2007_score"&gt;https://atcoder.jp/contests/joisc2007/tasks/joisc2007_score&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="factorial-階乗-factorial"&gt;factorial. 階乗 (Factorial)&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://atcoder.jp/contests/joisc2007/tasks/joisc2007_factor"&gt;https://atcoder.jp/contests/joisc2007/tasks/joisc2007_factor&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mall-ショッピングモール-mall"&gt;mall. ショッピングモール (Mall)&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://atcoder.jp/contests/joisc2007/tasks/joisc2007_mall"&gt;https://atcoder.jp/contests/joisc2007/tasks/joisc2007_mall&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="building-ビルの飾り付け-building"&gt;building. ビルの飾り付け (Building)&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://atcoder.jp/contests/joisc2007/tasks/joisc2007_buildi"&gt;https://atcoder.jp/contests/joisc2007/tasks/joisc2007_buildi&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="fermat-フェルマー方程式-fermat"&gt;fermat. フェルマー方程式 (Fermat)&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://atcoder.jp/contests/joisc2007/tasks/joisc2007_fermat"&gt;https://atcoder.jp/contests/joisc2007/tasks/joisc2007_fermat&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="salt-salt-tree-xv"&gt;salt. SALT TREE XV&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://atcoder.jp/contests/joisc2007/tasks/joisc2007_salt"&gt;https://atcoder.jp/contests/joisc2007/tasks/joisc2007_salt&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="anagram-アナグラム-anagram"&gt;anagram. アナグラム (Anagram)&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://atcoder.jp/contests/joisc2007/tasks/joisc2007_anagra"&gt;https://atcoder.jp/contests/joisc2007/tasks/joisc2007_anagra&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2026/1/25 自力 AC&lt;/p&gt;
&lt;p&gt;&lt;a href="https://kenkoooo.com/atcoder/#/contest/show/d1b52ca5-dd9a-4c44-a49c-47f405fa737e"&gt;https://kenkoooo.com/atcoder/#/contest/show/d1b52ca5-dd9a-4c44-a49c-47f405fa737e&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;void&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;solve&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ios_base&lt;span style="color:#f92672"&gt;::&lt;/span&gt;sync_with_stdio(false);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cin.tie(&lt;span style="color:#66d9ef"&gt;nullptr&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; string S;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cin &lt;span style="color:#f92672"&gt;&amp;gt;&amp;gt;&lt;/span&gt; S;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; vll cnt(&lt;span style="color:#ae81ff"&gt;26&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; (&lt;span style="color:#66d9ef"&gt;char&lt;/span&gt; c : S) cnt[c &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;A&amp;#39;&lt;/span&gt;]&lt;span style="color:#f92672"&gt;++&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; vll fac(&lt;span style="color:#ae81ff"&gt;21&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; fac[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; rep(i, &lt;span style="color:#ae81ff"&gt;20&lt;/span&gt;) fac[i &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; fac[i] &lt;span style="color:#f92672"&gt;*&lt;/span&gt; (i &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; reverse(all(S));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;auto&lt;/span&gt; f &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [&lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;](&lt;span style="color:#66d9ef"&gt;auto&lt;/span&gt; f, string s) &lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt; ll {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (s &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; up &lt;span style="color:#f92672"&gt;=&lt;/span&gt; s.back() &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;A&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ll sum &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; rep(i, up) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (cnt[i] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;continue&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cnt[i]&lt;span style="color:#f92672"&gt;--&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ll num &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, den &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; rep(j, &lt;span style="color:#ae81ff"&gt;26&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (cnt[j]) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; num &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; cnt[j];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; den &lt;span style="color:#f92672"&gt;*=&lt;/span&gt; fac[cnt[j]];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; sum &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; fac[num] &lt;span style="color:#f92672"&gt;/&lt;/span&gt; den;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cnt[i]&lt;span style="color:#f92672"&gt;++&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s.pop_back();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cnt[up]&lt;span style="color:#f92672"&gt;--&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; sum &lt;span style="color:#f92672"&gt;+&lt;/span&gt; f(f, s);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; };
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cout &lt;span style="color:#f92672"&gt;&amp;lt;&amp;lt;&lt;/span&gt; f(f, S) &lt;span style="color:#f92672"&gt;&amp;lt;&amp;lt;&lt;/span&gt; endl;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="route-象使い-route"&gt;route. 象使い (Route)&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://atcoder.jp/contests/joisc2007/tasks/joisc2007_route"&gt;https://atcoder.jp/contests/joisc2007/tasks/joisc2007_route&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Joi2012yo</title><link>https://goropikari.github.io/CompetitiveProgramming/joi/joi2012yo/</link><pubDate>Fri, 19 Sep 2025 02:43:42 +0900</pubDate><guid>https://goropikari.github.io/CompetitiveProgramming/joi/joi2012yo/</guid><description>&lt;p&gt;&lt;a href="https://atcoder.jp/contests/abcjoi2012yo"&gt;https://atcoder.jp/contests/abcjoi2012yo&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="a-ランチ-lunch"&gt;A. ランチ (Lunch)&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://atcoder.jp/contests/joi2012yo/tasks/joi2012yo_a"&gt;https://atcoder.jp/contests/joi2012yo/tasks/joi2012yo_a&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="b-サッカー-soccer"&gt;B. サッカー (Soccer)&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://atcoder.jp/contests/joi2012yo/tasks/joi2012yo_b"&gt;https://atcoder.jp/contests/joi2012yo/tasks/joi2012yo_b&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="c-最高のピザ-best-pizza"&gt;C. 最高のピザ (Best Pizza)&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://atcoder.jp/contests/joi2012yo/tasks/joi2012yo_c"&gt;https://atcoder.jp/contests/joi2012yo/tasks/joi2012yo_c&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="d-パスタ-pasta"&gt;D. パスタ (Pasta)&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://atcoder.jp/contests/joi2012yo/tasks/joi2012yo_d"&gt;https://atcoder.jp/contests/joi2012yo/tasks/joi2012yo_d&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="e-イルミネーション-illumination"&gt;E. イルミネーション (Illumination)&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://atcoder.jp/contests/joi2012yo/tasks/joi2012yo_e"&gt;https://atcoder.jp/contests/joi2012yo/tasks/joi2012yo_e&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="f-ジグザグ数-zig-zag-numbers"&gt;F. ジグザグ数 (Zig-Zag Numbers)&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://atcoder.jp/contests/joi2012yo/tasks/joi2012yo_f"&gt;https://atcoder.jp/contests/joi2012yo/tasks/joi2012yo_f&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;桁 DP 解法だということをわかった状態で自力 AC.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;void&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;solve&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ios_base&lt;span style="color:#f92672"&gt;::&lt;/span&gt;sync_with_stdio(false);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cin.tie(&lt;span style="color:#66d9ef"&gt;nullptr&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; modint&lt;span style="color:#f92672"&gt;::&lt;/span&gt;set_mod(&lt;span style="color:#ae81ff"&gt;10000&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;using&lt;/span&gt; mint &lt;span style="color:#f92672"&gt;=&lt;/span&gt; modint;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;auto&lt;/span&gt; f &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [&lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;](string X, ll MOD) &lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt; mint {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; N &lt;span style="color:#f92672"&gt;=&lt;/span&gt; X.size();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// dp[is_less][prev number][dir][mod]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// dir: 0 不定, 1 up, 2 down
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; vector dp(&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;, vector(&lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;, vector(&lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;, vector&lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;mint&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;(MOD))));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; dp[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;][&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;][&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;][&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; rep(i, N) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; t &lt;span style="color:#f92672"&gt;=&lt;/span&gt; X[i] &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;0&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; vector dpn(&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;, vector(&lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;, vector(&lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;, vector&lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;mint&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;(MOD))));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; rep(d, &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;) rep(is_less, &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;) rep(prev_number, &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;) rep(dir, &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;) rep(mod, MOD) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (&lt;span style="color:#f92672"&gt;!&lt;/span&gt;is_less &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; d &lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; t) &lt;span style="color:#66d9ef"&gt;continue&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (dir &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; prev_number &lt;span style="color:#f92672"&gt;&amp;lt;=&lt;/span&gt; d) &lt;span style="color:#66d9ef"&gt;continue&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (dir &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; prev_number &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; d) &lt;span style="color:#66d9ef"&gt;continue&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (dir &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; d &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; prev_number &lt;span style="color:#f92672"&gt;==&lt;/span&gt; d) &lt;span style="color:#66d9ef"&gt;continue&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; is_less_n &lt;span style="color:#f92672"&gt;=&lt;/span&gt; is_less &lt;span style="color:#f92672"&gt;||&lt;/span&gt; d &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; t;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; dir_n &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (dir &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; prev_number &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; dir_n &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (prev_number &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; d) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; dir_n &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (prev_number &lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; d) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; dir_n &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; mod_n &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (mod &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; d) &lt;span style="color:#f92672"&gt;%&lt;/span&gt; MOD;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; dpn[is_less_n][d][dir_n][mod_n] &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; dp[is_less][prev_number][dir][mod];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; swap(dp, dpn);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mint ans &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; rep(is_less, &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;) rep(d, &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;) rep(dir, &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ans &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; dp[is_less][d][dir][&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// cout &amp;lt;&amp;lt; ans &amp;lt;&amp;lt; endl;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; ans;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; };
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; string A, B;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ll M;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cin &lt;span style="color:#f92672"&gt;&amp;gt;&amp;gt;&lt;/span&gt; A &lt;span style="color:#f92672"&gt;&amp;gt;&amp;gt;&lt;/span&gt; B &lt;span style="color:#f92672"&gt;&amp;gt;&amp;gt;&lt;/span&gt; M;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ll zigzag &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ll m &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (A[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;] &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;0&amp;#39;&lt;/span&gt;) &lt;span style="color:#f92672"&gt;%&lt;/span&gt; M;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; rep2(i, &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, (ll)A.size()) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; m &lt;span style="color:#f92672"&gt;*=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; m &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; A[i] &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;0&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; m &lt;span style="color:#f92672"&gt;%=&lt;/span&gt; M;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; ok &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; rep(i, (ll)A.size() &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (A[i] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; A[i &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ok &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; rep2(i, &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, (ll)A.size() &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (A[i &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; A[i] &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; A[i] &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; A[i &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]) ok &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (A[i &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] &lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; A[i] &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; A[i] &lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; A[i &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]) ok &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; zigzag &lt;span style="color:#f92672"&gt;=&lt;/span&gt; m &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; ok;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mint ans &lt;span style="color:#f92672"&gt;=&lt;/span&gt; f(B, M) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; f(A, M) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; zigzag;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cout &lt;span style="color:#f92672"&gt;&amp;lt;&amp;lt;&lt;/span&gt; ans.val() &lt;span style="color:#f92672"&gt;&amp;lt;&amp;lt;&lt;/span&gt; endl;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item></channel></rss>