Files
PAT/source/html/t1027.html
T

26 lines
12 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Larry and Inversions
<div class="ques-view"><p>Larry just studied the algorithm to count number of inversions. He's very interested in it. He's considering another problem: Given a permutation of integers from 1 to <span class="katex"><span class="katex-mathml"><math><mrow><mi>n</mi></mrow>n</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.43056em;"></span><span class="strut bottom" style="height:0.43056em;vertical-align:0em;"></span><span class="base textstyle uncramped"><span class="mord mathit">n</span></span></span></span>, how many inversions it has if we reverse one of its subarray?</p>
<p>Formally speaking, given an integer array <span class="katex"><span class="katex-mathml"><math><mrow><mi>a</mi></mrow>a</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.43056em;"></span><span class="strut bottom" style="height:0.43056em;vertical-align:0em;"></span><span class="base textstyle uncramped"><span class="mord mathit">a</span></span></span></span> (indices are from 0 to <span class="katex"><span class="katex-mathml"><math><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow>n-1</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.64444em;"></span><span class="strut bottom" style="height:0.72777em;vertical-align:-0.08333em;"></span><span class="base textstyle uncramped"><span class="mord mathit">n</span><span class="mbin">−</span><span class="mord mathrm">1</span></span></span></span>) which contains a permutation of integers from 1 to <span class="katex"><span class="katex-mathml"><math><mrow><mi>n</mi></mrow>n</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.43056em;"></span><span class="strut bottom" style="height:0.43056em;vertical-align:0em;"></span><span class="base textstyle uncramped"><span class="mord mathit">n</span></span></span></span>, two elements <span class="katex"><span class="katex-mathml"><math><mrow><mi>a</mi><mo>[</mo><mi>i</mi><mo>]</mo></mrow>a[i]</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.75em;"></span><span class="strut bottom" style="height:1em;vertical-align:-0.25em;"></span><span class="base textstyle uncramped"><span class="mord mathit">a</span><span class="mopen">[</span><span class="mord mathit">i</span><span class="mclose">]</span></span></span></span> and <span class="katex"><span class="katex-mathml"><math><mrow><mi>a</mi><mo>[</mo><mi>j</mi><mo>]</mo></mrow>a[j]</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.75em;"></span><span class="strut bottom" style="height:1em;vertical-align:-0.25em;"></span><span class="base textstyle uncramped"><span class="mord mathit">a</span><span class="mopen">[</span><span class="mord mathit" style="margin-right:0.05724em;">j</span><span class="mclose">]</span></span></span></span> form an <strong>inversion</strong> if <span class="katex"><span class="katex-mathml"><math><mrow><mi>a</mi><mo>[</mo><mi>i</mi><mo>]</mo><mo>&gt;</mo><mi>a</mi><mo>[</mo><mi>j</mi><mo>]</mo></mrow>a[i] &gt; a[j]</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.75em;"></span><span class="strut bottom" style="height:1em;vertical-align:-0.25em;"></span><span class="base textstyle uncramped"><span class="mord mathit">a</span><span class="mopen">[</span><span class="mord mathit">i</span><span class="mclose">]</span><span class="mrel">&gt;</span><span class="mord mathit">a</span><span class="mopen">[</span><span class="mord mathit" style="margin-right:0.05724em;">j</span><span class="mclose">]</span></span></span></span> and <span class="katex"><span class="katex-mathml"><math><mrow><mi>i</mi><mo>&lt;</mo><mi>j</mi></mrow>i &lt; j</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.65952em;"></span><span class="strut bottom" style="height:0.85396em;vertical-align:-0.19444em;"></span><span class="base textstyle uncramped"><span class="mord mathit">i</span><span class="mrel">&lt;</span><span class="mord mathit" style="margin-right:0.05724em;">j</span></span></span></span>. Your job is to count, for each pair of <span class="katex"><span class="katex-mathml"><math><mrow><mn>0</mn><mo>≤</mo><mi>i</mi><mo>≤</mo><mi>j</mi><mo>&lt;</mo><mi>n</mi></mrow>0 \le i \le j &lt; n</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.65952em;"></span><span class="strut bottom" style="height:0.85396em;vertical-align:-0.19444em;"></span><span class="base textstyle uncramped"><span class="mord mathrm">0</span><span class="mrel">≤</span><span class="mord mathit">i</span><span class="mrel">≤</span><span class="mord mathit" style="margin-right:0.05724em;">j</span><span class="mrel">&lt;</span><span class="mord mathit">n</span></span></span></span>, the number of inversions if we reverse the subarray from <span class="katex"><span class="katex-mathml"><math><mrow><mi>a</mi><mo>[</mo><mi>i</mi><mo>]</mo></mrow>a[i]</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.75em;"></span><span class="strut bottom" style="height:1em;vertical-align:-0.25em;"></span><span class="base textstyle uncramped"><span class="mord mathit">a</span><span class="mopen">[</span><span class="mord mathit">i</span><span class="mclose">]</span></span></span></span> to <span class="katex"><span class="katex-mathml"><math><mrow><mi>a</mi><mo>[</mo><mi>j</mi><mo>]</mo></mrow>a[j]</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.75em;"></span><span class="strut bottom" style="height:1em;vertical-align:-0.25em;"></span><span class="base textstyle uncramped"><span class="mord mathit">a</span><span class="mopen">[</span><span class="mord mathit" style="margin-right:0.05724em;">j</span><span class="mclose">]</span></span></span></span>.</p>
<h3 id="input-specification-">Input Specification:</h3>
<p>Each input file contains one test case. Each case consists of a positive integer <span class="katex"><span class="katex-mathml"><math><mrow><mi>n</mi></mrow>n</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.43056em;"></span><span class="strut bottom" style="height:0.43056em;vertical-align:0em;"></span><span class="base textstyle uncramped"><span class="mord mathit">n</span></span></span></span> (<span class="katex"><span class="katex-mathml"><math><mrow><mo>≤</mo><mn>1</mn><mo separator="true">,</mo><mn>0</mn><mn>0</mn><mn>0</mn></mrow>\le 1,000</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.64444em;"></span><span class="strut bottom" style="height:0.8388800000000001em;vertical-align:-0.19444em;"></span><span class="base textstyle uncramped"><span class="mrel">≤</span><span class="mord mathrm">1</span><span class="mpunct">,</span><span class="mord mathrm">0</span><span class="mord mathrm">0</span><span class="mord mathrm">0</span></span></span></span>) in the first line, and a permutation of integers from 1 to <span class="katex"><span class="katex-mathml"><math><mrow><mi>n</mi></mrow>n</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.43056em;"></span><span class="strut bottom" style="height:0.43056em;vertical-align:0em;"></span><span class="base textstyle uncramped"><span class="mord mathit">n</span></span></span></span> in the second line. The numbers in a line are separated by a single space.</p>
<h3 id="output-specification-">Output Specification:</h3>
<p>For each test case, output <span class="katex"><span class="katex-mathml"><math><mrow><mi>n</mi><mo>(</mo><mi>n</mi><mo>+</mo><mn>1</mn><mo>)</mo><mi mathvariant="normal">/</mi><mn>2</mn></mrow>n(n + 1) / 2</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.75em;"></span><span class="strut bottom" style="height:1em;vertical-align:-0.25em;"></span><span class="base textstyle uncramped"><span class="mord mathit">n</span><span class="mopen">(</span><span class="mord mathit">n</span><span class="mbin">+</span><span class="mord mathrm">1</span><span class="mclose">)</span><span class="mord mathrm">/</span><span class="mord mathrm">2</span></span></span></span> integers in a single line. The results are for reversing subarray indicating by all possible pairs of indices <span class="katex"><span class="katex-mathml"><math><mrow><mn>0</mn><mo>≤</mo><mi>i</mi><mo>≤</mo><mi>j</mi><mo>&lt;</mo><mi>n</mi></mrow>0 \le i \le j &lt; n</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.65952em;"></span><span class="strut bottom" style="height:0.85396em;vertical-align:-0.19444em;"></span><span class="base textstyle uncramped"><span class="mord mathrm">0</span><span class="mrel">≤</span><span class="mord mathit">i</span><span class="mrel">≤</span><span class="mord mathit" style="margin-right:0.05724em;">j</span><span class="mrel">&lt;</span><span class="mord mathit">n</span></span></span></span> in <span class="katex"><span class="katex-mathml"><math><mrow><mi>i</mi></mrow>i</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.65952em;"></span><span class="strut bottom" style="height:0.65952em;vertical-align:0em;"></span><span class="base textstyle uncramped"><span class="mord mathit">i</span></span></span></span>-major order -- that is, the first <span class="katex"><span class="katex-mathml"><math><mrow><mi>n</mi></mrow>n</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.43056em;"></span><span class="strut bottom" style="height:0.43056em;vertical-align:0em;"></span><span class="base textstyle uncramped"><span class="mord mathit">n</span></span></span></span> results are for the reverse of subarrary [0..0], [0..1], ...[0..<span class="katex"><span class="katex-mathml"><math><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow>n - 1</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.64444em;"></span><span class="strut bottom" style="height:0.72777em;vertical-align:-0.08333em;"></span><span class="base textstyle uncramped"><span class="mord mathit">n</span><span class="mbin">−</span><span class="mord mathrm">1</span></span></span></span>]; the next <span class="katex"><span class="katex-mathml"><math><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow>n - 1</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.64444em;"></span><span class="strut bottom" style="height:0.72777em;vertical-align:-0.08333em;"></span><span class="base textstyle uncramped"><span class="mord mathit">n</span><span class="mbin">−</span><span class="mord mathrm">1</span></span></span></span> results are for the reverse of subarry [1..1], [1..2],..., [1..<span class="katex"><span class="katex-mathml"><math><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow>n - 1</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.64444em;"></span><span class="strut bottom" style="height:0.72777em;vertical-align:-0.08333em;"></span><span class="base textstyle uncramped"><span class="mord mathit">n</span><span class="mbin">−</span><span class="mord mathrm">1</span></span></span></span>] and so on.</p>
<p>All the numbers in a line must be separated by a single space, with no extra space at the beginning or the end of the line.</p>
<h3 id="sample-input-">Sample Input:</h3>
<pre><code class="lang-in">3
2 1 3
</code></pre>
<h3 id="sample-output-">Sample Output:</h3>
<pre><code class="lang-out">1 0 2 1 2 1
</code></pre>
<p><strong>Hint:</strong></p>
<p>The original array is { 2, 1, 3 }.</p>
<ul>
<li>Reversing subarray [0..0] makes { 2, 1, 3 } which has 1 inversion.</li>
<li>Reversing subarray [0..1] makes { 1, 2, 3 } which has 0 inversion.</li>
<li>Reversing subarray [0..2] makes { 3, 1, 2 } which has 2 inversions.</li>
<li>Reversing subarray [1..1] makes { 2, 1, 3 } which has 1 inversion.</li>
<li>Reversing subarray [1..2] makes { 2, 3, 1 } which has 2 inversions.</li>
<li>Reversing subarrays [2..2] makes { 2, 1, 3 } which has 1 inversion.</li>
</ul>
</div>