<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>GCCFeli.cn &#187; 代码</title> <atom:link href="http://gccfeli.cn/tag/%e4%bb%a3%e7%a0%81/feed" rel="self" type="application/rss+xml" /><link>http://gccfeli.cn</link> <description></description> <lastBuildDate>Thu, 14 Jul 2011 08:18:00 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.1</generator> <atom:link rel='hub' href='http://gccfeli.cn/?pushpress=hub'/> <item><title>MMX指令学习: Alpha Blend</title><link>http://gccfeli.cn/2009/04/mmx-alpha-blend.html</link> <comments>http://gccfeli.cn/2009/04/mmx-alpha-blend.html#comments</comments> <pubDate>Tue, 07 Apr 2009 05:47:43 +0000</pubDate> <dc:creator>Felicia</dc:creator> <category><![CDATA[Game]]></category> <category><![CDATA[精华]]></category> <category><![CDATA[编译原理]]></category> <category><![CDATA[代码]]></category> <category><![CDATA[汇编]]></category><guid
isPermaLink="false">http://localhost/blog/?p=373</guid> <description><![CDATA[<p><strong>Andre Lamothe在他的大作《3D游戏编程大师技巧》一书中提到，对游戏程序员来说，速度就是生命。因此使用优化技术来提高程序执行速度必不可少。其中SIMD编程占据很重要的位置。首先从MMX学起。以下转载自网上，留作学习之用。</strong></p><h3>MMX版本的Alpha Blend算法实现</h3><p>这次我们的目标是: 超越普通的CPU玩家，用CPU的母语来优化程序!<br
/> <span
class="readmore"><a
href="http://gccfeli.cn/2009/04/mmx-alpha-blend.html" title="MMX指令学习: Alpha Blend">阅读全文（2194字）</a></span>]]></description> <content:encoded><![CDATA[<p><strong>Andre Lamothe在他的大作《3D游戏编程大师技巧》一书中提到，对游戏程序员来说，速度就是生命。因此使用优化技术来提高程序执行速度必不可少。其中SIMD编程占据很重要的位置。首先从MMX学起。以下转载自网上，留作学习之用。</strong></p><h3>MMX版本的Alpha Blend算法实现</h3><p>这次我们的目标是: 超越普通的CPU玩家，用CPU的母语来优化程序!<br
/> MMX技术到现在来说可以算是基本大众化了，目前大多数个人电脑都应该能支持它。P55C， K6， PII， PIII&#8230;按照惯例，Intel公司将在以后的x86版本永远支持它。<br
/> <span
id="more-373"></span><br
/> MMX技术的优点是什么?<br
/> 一言蔽之，就是一个指令操作多个整型数据.并且可以<strong>自动完成饱和运算</strong>。<br
/> <strong>MMX最适合的应用领域是数字图象处理，然后是语音，通讯等领域。</strong></p><p>写图象处理算法时很影响效率的以下几点是:</p><p>1.不厌其烦的低效邻域操作: 不厌其烦的写GfxBuffer， GfxBuffer[i + 1]， GfxBuffer[i + 2]， &#8230;取RGB值等。<br
/> 2.恼人的环绕:像素运算溢出，必须拿个大点的数据类型来保存结果再判断溢出，否则结果就是错误的</p><div
class="hl-wrapper"><div
class="hl-surround"><div
class="hl-main"><span
class="hl-types">short</span><span
class="hl-code"> </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">GfxOut</span><span
class="hl-code"> = </span><span
class="hl-identifier">GfxBuf1</span><span
class="hl-code"> + </span><span
class="hl-identifier">GfxBuf2</span><span
class="hl-code">;<br
/></span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">GfxOut</span><span
class="hl-code"> &gt; </span><span
class="hl-number">255</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-identifier">GfxOut</span><span
class="hl-code"> = </span><span
class="hl-number">255</span><span
class="hl-code">;<br
/></span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">GfxOut</span><span
class="hl-code"> &lt; </span><span
class="hl-number">0</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-identifier">GfxOut</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">;</span></div></div></div><p>问题是你知道那两个判断会生成多少汇编代码吗?</p><p>3.不必要的高精度: 该死的RGB->YUV运算，我们最熟悉的彩色转灰度运算:</p><div
class="hl-wrapper"><div
class="hl-surround"><div
class="hl-main"><span
class="hl-identifier">Y</span><span
class="hl-code"> = </span><span
class="hl-brackets">(</span><span
class="hl-identifier">BYTE</span><span
class="hl-brackets">)(</span><span
class="hl-identifier">Red</span><span
class="hl-code"> * </span><span
class="hl-number">0.299</span><span
class="hl-code"> + </span><span
class="hl-identifier">Green</span><span
class="hl-code"> * </span><span
class="hl-number">0.587</span><span
class="hl-code"> + </span><span
class="hl-identifier">Blue</span><span
class="hl-code"> * </span><span
class="hl-number">0.114</span><span
class="hl-brackets">)</span><span
class="hl-code">;</span></div></div></div><p>其实我们关心的是一个字节结果，谁愿意让协处理器做大量运算，得到float结果，还要再转换为byte结果呢？要知道IEEE浮点转整数可不象在C程序里看起来那么简单!(在你为51单片机这种低级的劣质的没有协处理器的CPU写过程序就知道了&#8230;)代价是相当大的。</p><p>尤其图面比较大的情况下，你会在屏幕面前等得生霉，我们不要那么高的精度啊。</p><p>而MMX技术就是黑暗中的灯塔，被老板咒骂的程序员的救命稻草，使图象处理模式识别和神经网络专业方向的研究生不被导师训斥的的葵花宝典&#8230;(本人不系Intel中国公司的营销部经理啊&#8230;)</p><p>以32-bit为例，下面具体讲下用简单的例子讲解MMX技术优化Alpha Blend算法:</p><div
class="hl-wrapper"><div
class="hl-surround"><div
class="hl-main"><span
class="hl-types">char</span><span
class="hl-code"> *</span><span
class="hl-identifier">pSrc</span><span
class="hl-code">，*</span><span
class="hl-identifier">pOvr</span><span
class="hl-code">;<br
/></span><span
class="hl-brackets">{</span><span
class="hl-code"> </span><span
class="hl-identifier">pSrc</span><span
class="hl-code">=</span><span
class="hl-identifier">pScanline1</span><span
class="hl-code">+</span><span
class="hl-identifier">j</span><span
class="hl-code">; </span><span
class="hl-identifier">pOvr</span><span
class="hl-code">=</span><span
class="hl-identifier">pScanLine2</span><span
class="hl-code">+</span><span
class="hl-identifier">j</span><span
class="hl-code">; </span><span
class="hl-identifier">j</span><span
class="hl-code">+=</span><span
class="hl-number">4</span><span
class="hl-code">; ...</span></div></div></div><p>假定我们的源像素在pSrc，覆盖图Overlay在pOvr，各指向一个32 bit像素。</p><p>MMX有八个64bitRegister，叫MM0->MM7，是浮点处理器的别名，也是他们的低64位映象。</p><div
class="hl-wrapper"><div
class="hl-surround"><div
class="hl-main"><span
class="hl-identifier">__asm</span><span
class="hl-code"> </span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">pxor</span><span
class="hl-code"> </span><span
class="hl-identifier">mm2</span><span
class="hl-code">, </span><span
class="hl-identifier">mm2</span><span
class="hl-code"> </span><span
class="hl-comment">//把MM2清0</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">mov</span><span
class="hl-code"> </span><span
class="hl-identifier">edx</span><span
class="hl-code">, </span><span
class="hl-identifier">dword</span><span
class="hl-code"> </span><span
class="hl-identifier">ptr</span><span
class="hl-code"> </span><span
class="hl-brackets">[</span><span
class="hl-identifier">pSrc</span><span
class="hl-brackets">]</span><span
class="hl-code"> </span><span
class="hl-comment">//取32bit像素地址到edx</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">movd</span><span
class="hl-code"> </span><span
class="hl-identifier">mm0</span><span
class="hl-code">, </span><span
class="hl-identifier">dword</span><span
class="hl-code"> </span><span
class="hl-identifier">ptr</span><span
class="hl-code"> </span><span
class="hl-brackets">[</span><span
class="hl-identifier">edx</span><span
class="hl-brackets">]</span><span
class="hl-code"> </span><span
class="hl-comment">//把Source像素取到mm0低32bit</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">mov</span><span
class="hl-code"> </span><span
class="hl-identifier">edx</span><span
class="hl-code">, </span><span
class="hl-identifier">dword</span><span
class="hl-code"> </span><span
class="hl-identifier">ptr</span><span
class="hl-code"> </span><span
class="hl-brackets">[</span><span
class="hl-identifier">pOvr</span><span
class="hl-brackets">]</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">movd</span><span
class="hl-code"> </span><span
class="hl-identifier">mm1</span><span
class="hl-code">, </span><span
class="hl-identifier">dword</span><span
class="hl-code"> </span><span
class="hl-identifier">ptr</span><span
class="hl-code"> </span><span
class="hl-brackets">[</span><span
class="hl-identifier">edx</span><span
class="hl-brackets">]</span><span
class="hl-code"> </span><span
class="hl-comment">//把32 bit Overlay像素取到mm1低32bit</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">punpcklbw</span><span
class="hl-code"> </span><span
class="hl-identifier">mm0</span><span
class="hl-code">, </span><span
class="hl-identifier">mm2</span><span
class="hl-code"> </span><span
class="hl-comment">//Source:8 bit到16 bit以容纳结果，32bit expand to 64 bit</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">punpcklbw</span><span
class="hl-code"> </span><span
class="hl-identifier">mm1</span><span
class="hl-code">, </span><span
class="hl-identifier">mm2</span><span
class="hl-code"> </span><span
class="hl-comment">//Overlay:8 bit到16 bit以容纳结果.32bit expand to 64 bit</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">movq</span><span
class="hl-code"> </span><span
class="hl-identifier">mm3</span><span
class="hl-code">, </span><span
class="hl-identifier">mm1</span><span
class="hl-code"> </span><span
class="hl-comment">// 因为要用Overlay的Alpha值</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">punpckhwd</span><span
class="hl-code"> </span><span
class="hl-identifier">mm3</span><span
class="hl-code">, </span><span
class="hl-identifier">mm3</span><span
class="hl-code"> </span><span
class="hl-comment">// 高字移动到双字</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">punpckhdq</span><span
class="hl-code"> </span><span
class="hl-identifier">mm3</span><span
class="hl-code">, </span><span
class="hl-identifier">mm3</span><span
class="hl-code"> </span><span
class="hl-comment">// 双字移动到四字，现在有八个像素的Alpha了!</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">movq</span><span
class="hl-code"> </span><span
class="hl-identifier">mm4</span><span
class="hl-code">, </span><span
class="hl-identifier">mm0</span><span
class="hl-code"> </span><span
class="hl-comment">//Source-&gt;mm4</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">movq</span><span
class="hl-code"> </span><span
class="hl-identifier">mm5</span><span
class="hl-code">, </span><span
class="hl-identifier">mm1</span><span
class="hl-code"> </span><span
class="hl-comment">//Overlay-&gt;mm5</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">psubusw</span><span
class="hl-code"> </span><span
class="hl-identifier">mm4</span><span
class="hl-code">, </span><span
class="hl-identifier">mm1</span><span
class="hl-code"> </span><span
class="hl-comment">//Source-Overlay，饱和减，小于0为0</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">psubusw</span><span
class="hl-code"> </span><span
class="hl-identifier">mm5</span><span
class="hl-code">, </span><span
class="hl-identifier">mm0</span><span
class="hl-code"> </span><span
class="hl-comment">//Overlay-Source，饱和减，小于0为0</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">pmullw</span><span
class="hl-code"> </span><span
class="hl-identifier">mm4</span><span
class="hl-code">, </span><span
class="hl-identifier">mm3</span><span
class="hl-code"> </span><span
class="hl-comment">//Alpha * (Source-Overlay)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">pmullw</span><span
class="hl-code"> </span><span
class="hl-identifier">mm5</span><span
class="hl-code">, </span><span
class="hl-identifier">mm3</span><span
class="hl-code"> </span><span
class="hl-comment">//Alpha * (Overlay-Source)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">psrlw</span><span
class="hl-code"> </span><span
class="hl-identifier">mm4</span><span
class="hl-code">, </span><span
class="hl-number">8</span><span
class="hl-code"> </span><span
class="hl-comment">//除以256，now mm4 get the result，(Source-Overlay)&lt;0 部分</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">psrlw</span><span
class="hl-code"> </span><span
class="hl-identifier">mm5</span><span
class="hl-code">, </span><span
class="hl-number">8</span><span
class="hl-code"> </span><span
class="hl-comment">//除以256，now mm5 get the result，(Overlay-Source)&gt;0 部分</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">paddusw</span><span
class="hl-code"> </span><span
class="hl-identifier">mm0</span><span
class="hl-code">, </span><span
class="hl-identifier">mm5</span><span
class="hl-code"> </span><span
class="hl-comment">//饱和加到原图象:D=Alpha*(O-S)+S，(Source-Overlay)&lt;0 部分</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">psubusw</span><span
class="hl-code"> </span><span
class="hl-identifier">mm0</span><span
class="hl-code">, </span><span
class="hl-identifier">mm4</span><span
class="hl-code"> </span><span
class="hl-comment">//饱和加到原图象D=S-Alpha*(S-O)，(Overlay-Source)&gt;0 部分</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">packuswb</span><span
class="hl-code"> </span><span
class="hl-identifier">mm0</span><span
class="hl-code">, </span><span
class="hl-identifier">mm0</span><span
class="hl-code"> </span><span
class="hl-comment">//紧缩到低32bit</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">mov</span><span
class="hl-code"> </span><span
class="hl-identifier">edx</span><span
class="hl-code">, </span><span
class="hl-identifier">dword</span><span
class="hl-code"> </span><span
class="hl-identifier">ptr</span><span
class="hl-code"> </span><span
class="hl-brackets">[</span><span
class="hl-identifier">pSrc</span><span
class="hl-brackets">]</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">movd</span><span
class="hl-code"> </span><span
class="hl-identifier">dword</span><span
class="hl-code"> </span><span
class="hl-identifier">ptr</span><span
class="hl-code"> </span><span
class="hl-brackets">[</span><span
class="hl-identifier">edx</span><span
class="hl-brackets">]</span><span
class="hl-code">, </span><span
class="hl-identifier">mm0</span><span
class="hl-code"> </span><span
class="hl-comment">//保存结果</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">emms</span><span
class="hl-code"> </span><span
class="hl-comment">///必要的!Empty MMX Status</span><span
class="hl-code"><br
/></span><span
class="hl-brackets">}</span></div></div></div><p>以上算法和常规算法比较:<br
/> Legend PII 400 With damnble, extremely Slow Sis6326 Video Card: 640*480*32bit bitmap:<br
/> Normal algorithm:170-180 ms<br
/> This algorithm:Below 40 ms</p><p>均包含拷贝内存时间，纯处理时间只要20ms， 就是说如果用DirectX，Blt，BltFast通常比memcpy快很多，就小于40ms了</p><p>总结: 反复使用紧缩移位，紧缩扩展，紧缩压缩指令，并施加饱和运算等，是用MMX写算法的核心。</p><p>程序员必须对数制，内存结构，定点数很熟悉才能写出高效率的MMX加速的子程序。</p> ]]></content:encoded> <wfw:commentRss>http://gccfeli.cn/2009/04/mmx-alpha-blend.html/feed</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>[计算几何] pku1444 长方体旋转</title><link>http://gccfeli.cn/2008/01/%e8%ae%a1%e7%ae%97%e5%87%a0%e4%bd%95-pku1444-%e9%95%bf%e6%96%b9%e4%bd%93%e6%97%8b%e8%bd%ac.html</link> <comments>http://gccfeli.cn/2008/01/%e8%ae%a1%e7%ae%97%e5%87%a0%e4%bd%95-pku1444-%e9%95%bf%e6%96%b9%e4%bd%93%e6%97%8b%e8%bd%ac.html#comments</comments> <pubDate>Wed, 23 Jan 2008 13:07:00 +0000</pubDate> <dc:creator>Felicia</dc:creator> <category><![CDATA[计算几何]]></category> <category><![CDATA[代码]]></category><guid
isPermaLink="false">http://www.gccfeli.cn/?p=121</guid> <description><![CDATA[<p>题目意思很简单，已知长方体表面上两个点，要求这两个点的最短表面距离。 <br/>一开始我是手推展开方式的，后来发现一共有12种展开情况，手写坐标变换相当麻烦。 <br/>然后改用递归方式展开。具体方式是先把第一个点转到底面(xOy平面)，然后对四个方向把底面翻开，把翻到的面作为新的底面。递归做下去，一直到第二个点也翻到底面上。 <br/>下面是我的代码：</p><div
class="hl-wrapper"> <span
class="readmore"><a
href="http://gccfeli.cn/2008/01/%e8%ae%a1%e7%ae%97%e5%87%a0%e4%bd%95-pku1444-%e9%95%bf%e6%96%b9%e4%bd%93%e6%97%8b%e8%bd%ac.html" title="[计算几何] pku1444 长方体旋转">阅读全文（420字）</a></span>]]></description> <content:encoded><![CDATA[<p>题目意思很简单，已知长方体表面上两个点，要求这两个点的最短表面距离。 <br/>一开始我是手推展开方式的，后来发现一共有12种展开情况，手写坐标变换相当麻烦。 <br/>然后改用递归方式展开。具体方式是先把第一个点转到底面(xOy平面)，然后对四个方向把底面翻开，把翻到的面作为新的底面。递归做下去，一直到第二个点也翻到底面上。 <br/>下面是我的代码：</p><div
class="hl-wrapper"><div
class="hl-title">&#19979;&#36733;: <a
href="http://gccfeli.cn/wp-content/plugins/coolcode/coolcode.php?p=121&amp;download=pku1444.cpp">pku1444.cpp</a></div><div
class="hl-surround"><div
class="hl-main"><span
class="hl-mlcomment">/***********************************************************************<br
/>Author: WHU_GCC<br
/>Created Time: 2008-1-23 19:34:33<br
/>File Name: 1444.cpp<br
/>Description: <br
/>***********************************************************************/</span><span
class="hl-code"><br
/></span><span
class="hl-prepro">#include </span><span
class="hl-quotes">&lt;</span><span
class="hl-string">iostream</span><span
class="hl-quotes">&gt;</span><span
class="hl-prepro"></span><span
class="hl-code"><br
/></span><span
class="hl-reserved">using</span><span
class="hl-code"> </span><span
class="hl-types">namespace</span><span
class="hl-code"> </span><span
class="hl-identifier">std</span><span
class="hl-code">;<br
/>&nbsp;<br
/></span><span
class="hl-prepro">#define</span><span
class="hl-code"> </span><span
class="hl-identifier">out</span><span
class="hl-brackets">(</span><span
class="hl-identifier">x</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">cout</span><span
class="hl-code"> &lt;&lt; #</span><span
class="hl-identifier">x</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-quotes">&quot;</span><span
class="hl-string">: </span><span
class="hl-quotes">&quot;</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-identifier">x</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-identifier">endl</span><span
class="hl-brackets">)</span><span
class="hl-prepro"></span><span
class="hl-code"><br
/></span><span
class="hl-types">typedef</span><span
class="hl-code"> </span><span
class="hl-types">long</span><span
class="hl-code"> </span><span
class="hl-types">long</span><span
class="hl-code"> </span><span
class="hl-identifier">int64</span><span
class="hl-code">;<br
/></span><span
class="hl-types">const</span><span
class="hl-code"> </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">maxint</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-identifier">x7fffffff</span><span
class="hl-code">;<br
/></span><span
class="hl-types">const</span><span
class="hl-code"> </span><span
class="hl-identifier">int64</span><span
class="hl-code"> </span><span
class="hl-identifier">maxint64</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-identifier">x7FFFFFFFFFFFFFFFLL</span><span
class="hl-code">;<br
/></span><span
class="hl-types">template</span><span
class="hl-code"> &lt;</span><span
class="hl-types">class</span><span
class="hl-code"> </span><span
class="hl-identifier">T</span><span
class="hl-code">&gt; </span><span
class="hl-types">void</span><span
class="hl-code"> </span><span
class="hl-identifier">show</span><span
class="hl-brackets">(</span><span
class="hl-identifier">T</span><span
class="hl-code"> </span><span
class="hl-identifier">a</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">n</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-brackets">{</span><span
class="hl-code"> </span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt; </span><span
class="hl-identifier">n</span><span
class="hl-code">; ++</span><span
class="hl-identifier">i</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-identifier">cout</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> &lt;&lt; ' '; </span><span
class="hl-identifier">cout</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-identifier">endl</span><span
class="hl-code">; </span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/></span><span
class="hl-types">template</span><span
class="hl-code"> &lt;</span><span
class="hl-types">class</span><span
class="hl-code"> </span><span
class="hl-identifier">T</span><span
class="hl-code">&gt; </span><span
class="hl-types">void</span><span
class="hl-code"> </span><span
class="hl-identifier">show</span><span
class="hl-brackets">(</span><span
class="hl-identifier">T</span><span
class="hl-code"> </span><span
class="hl-identifier">a</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">r</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">l</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-brackets">{</span><span
class="hl-code"> </span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt; </span><span
class="hl-identifier">r</span><span
class="hl-code">; ++</span><span
class="hl-identifier">i</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-identifier">show</span><span
class="hl-brackets">(</span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">, </span><span
class="hl-identifier">l</span><span
class="hl-brackets">)</span><span
class="hl-code">; </span><span
class="hl-identifier">cout</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-identifier">endl</span><span
class="hl-code">; </span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">ans</span><span
class="hl-code">;<br
/>&nbsp;<br
/></span><span
class="hl-types">void</span><span
class="hl-code"> </span><span
class="hl-identifier">walk</span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">j</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">x0</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">y0</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">x</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">y</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">z</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">l</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">w</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">h</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/></span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">z</span><span
class="hl-code"> == </span><span
class="hl-number">0</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">ans</span><span
class="hl-code"> &lt;?= </span><span
class="hl-brackets">(</span><span
class="hl-identifier">x0</span><span
class="hl-code"> - </span><span
class="hl-identifier">x</span><span
class="hl-brackets">)</span><span
class="hl-code"> * </span><span
class="hl-brackets">(</span><span
class="hl-identifier">x0</span><span
class="hl-code"> - </span><span
class="hl-identifier">x</span><span
class="hl-brackets">)</span><span
class="hl-code"> + </span><span
class="hl-brackets">(</span><span
class="hl-identifier">y0</span><span
class="hl-code"> - </span><span
class="hl-identifier">y</span><span
class="hl-brackets">)</span><span
class="hl-code"> * </span><span
class="hl-brackets">(</span><span
class="hl-identifier">y0</span><span
class="hl-code"> - </span><span
class="hl-identifier">y</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">else</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">i</span><span
class="hl-code"> &gt;= </span><span
class="hl-number">0</span><span
class="hl-code"> &amp;&amp; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt; </span><span
class="hl-number">2</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">walk</span><span
class="hl-brackets">(</span><span
class="hl-identifier">i</span><span
class="hl-code"> + </span><span
class="hl-number">1</span><span
class="hl-code">, </span><span
class="hl-identifier">j</span><span
class="hl-code">, </span><span
class="hl-identifier">x0</span><span
class="hl-code">, </span><span
class="hl-identifier">y0</span><span
class="hl-code"> - </span><span
class="hl-identifier">w</span><span
class="hl-code">, </span><span
class="hl-identifier">x</span><span
class="hl-code">, </span><span
class="hl-identifier">z</span><span
class="hl-code">, </span><span
class="hl-identifier">w</span><span
class="hl-code"> - </span><span
class="hl-identifier">y</span><span
class="hl-code">, </span><span
class="hl-identifier">l</span><span
class="hl-code">, </span><span
class="hl-identifier">h</span><span
class="hl-code">, </span><span
class="hl-identifier">w</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt;= </span><span
class="hl-number">0</span><span
class="hl-code"> &amp;&amp; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &gt; -</span><span
class="hl-number">2</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">walk</span><span
class="hl-brackets">(</span><span
class="hl-identifier">i</span><span
class="hl-code"> - </span><span
class="hl-number">1</span><span
class="hl-code">, </span><span
class="hl-identifier">j</span><span
class="hl-code">, </span><span
class="hl-identifier">x0</span><span
class="hl-code">, </span><span
class="hl-identifier">y0</span><span
class="hl-code"> + </span><span
class="hl-identifier">h</span><span
class="hl-code">, </span><span
class="hl-identifier">x</span><span
class="hl-code">, </span><span
class="hl-identifier">h</span><span
class="hl-code"> - </span><span
class="hl-identifier">z</span><span
class="hl-code">, </span><span
class="hl-identifier">y</span><span
class="hl-code">, </span><span
class="hl-identifier">l</span><span
class="hl-code">, </span><span
class="hl-identifier">h</span><span
class="hl-code">, </span><span
class="hl-identifier">w</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">j</span><span
class="hl-code"> &gt;= </span><span
class="hl-number">0</span><span
class="hl-code"> &amp;&amp; </span><span
class="hl-identifier">j</span><span
class="hl-code"> &lt; </span><span
class="hl-number">2</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">walk</span><span
class="hl-brackets">(</span><span
class="hl-identifier">i</span><span
class="hl-code">, </span><span
class="hl-identifier">j</span><span
class="hl-code"> + </span><span
class="hl-number">1</span><span
class="hl-code">, </span><span
class="hl-identifier">x0</span><span
class="hl-code"> - </span><span
class="hl-identifier">l</span><span
class="hl-code">, </span><span
class="hl-identifier">y0</span><span
class="hl-code">, </span><span
class="hl-identifier">z</span><span
class="hl-code">, </span><span
class="hl-identifier">y</span><span
class="hl-code">, </span><span
class="hl-identifier">l</span><span
class="hl-code"> - </span><span
class="hl-identifier">x</span><span
class="hl-code">, </span><span
class="hl-identifier">h</span><span
class="hl-code">, </span><span
class="hl-identifier">w</span><span
class="hl-code">, </span><span
class="hl-identifier">l</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">j</span><span
class="hl-code"> &lt;= </span><span
class="hl-number">0</span><span
class="hl-code"> &amp;&amp; </span><span
class="hl-identifier">j</span><span
class="hl-code"> &gt; -</span><span
class="hl-number">2</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">walk</span><span
class="hl-brackets">(</span><span
class="hl-identifier">i</span><span
class="hl-code">, </span><span
class="hl-identifier">j</span><span
class="hl-code"> - </span><span
class="hl-number">1</span><span
class="hl-code">, </span><span
class="hl-identifier">x0</span><span
class="hl-code"> + </span><span
class="hl-identifier">h</span><span
class="hl-code">, </span><span
class="hl-identifier">y0</span><span
class="hl-code">, </span><span
class="hl-identifier">h</span><span
class="hl-code"> - </span><span
class="hl-identifier">z</span><span
class="hl-code">, </span><span
class="hl-identifier">y</span><span
class="hl-code">, </span><span
class="hl-identifier">x</span><span
class="hl-code">, </span><span
class="hl-identifier">h</span><span
class="hl-code">, </span><span
class="hl-identifier">w</span><span
class="hl-code">, </span><span
class="hl-identifier">l</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/></span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">main</span><span
class="hl-brackets">()</span><span
class="hl-code"><br
/></span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">l</span><span
class="hl-code">, </span><span
class="hl-identifier">w</span><span
class="hl-code">, </span><span
class="hl-identifier">h</span><span
class="hl-code">, </span><span
class="hl-identifier">x1</span><span
class="hl-code">, </span><span
class="hl-identifier">y1</span><span
class="hl-code">, </span><span
class="hl-identifier">z1</span><span
class="hl-code">, </span><span
class="hl-identifier">x2</span><span
class="hl-code">, </span><span
class="hl-identifier">y2</span><span
class="hl-code">, </span><span
class="hl-identifier">z2</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">while</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">scanf</span><span
class="hl-brackets">(</span><span
class="hl-quotes">&quot;</span><span
class="hl-string">%d%d%d</span><span
class="hl-quotes">&quot;</span><span
class="hl-code">, &amp;</span><span
class="hl-identifier">l</span><span
class="hl-code">, &amp;</span><span
class="hl-identifier">w</span><span
class="hl-code">, &amp;</span><span
class="hl-identifier">h</span><span
class="hl-brackets">)</span><span
class="hl-code"> != </span><span
class="hl-identifier">EOF</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">scanf</span><span
class="hl-brackets">(</span><span
class="hl-quotes">&quot;</span><span
class="hl-string">%d%d%d</span><span
class="hl-quotes">&quot;</span><span
class="hl-code">, &amp;</span><span
class="hl-identifier">x1</span><span
class="hl-code">, &amp;</span><span
class="hl-identifier">y1</span><span
class="hl-code">, &amp;</span><span
class="hl-identifier">z1</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">scanf</span><span
class="hl-brackets">(</span><span
class="hl-quotes">&quot;</span><span
class="hl-string">%d%d%d</span><span
class="hl-quotes">&quot;</span><span
class="hl-code">, &amp;</span><span
class="hl-identifier">x2</span><span
class="hl-code">, &amp;</span><span
class="hl-identifier">y2</span><span
class="hl-code">, &amp;</span><span
class="hl-identifier">z2</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">z1</span><span
class="hl-code"> != </span><span
class="hl-number">0</span><span
class="hl-code"> &amp;&amp; </span><span
class="hl-identifier">z1</span><span
class="hl-code"> != </span><span
class="hl-identifier">h</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">y1</span><span
class="hl-code"> != </span><span
class="hl-number">0</span><span
class="hl-code"> &amp;&amp; </span><span
class="hl-identifier">y1</span><span
class="hl-code"> != </span><span
class="hl-identifier">w</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">swap</span><span
class="hl-brackets">(</span><span
class="hl-identifier">x1</span><span
class="hl-code">, </span><span
class="hl-identifier">z1</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">swap</span><span
class="hl-brackets">(</span><span
class="hl-identifier">x2</span><span
class="hl-code">, </span><span
class="hl-identifier">z2</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">swap</span><span
class="hl-brackets">(</span><span
class="hl-identifier">l</span><span
class="hl-code">, </span><span
class="hl-identifier">h</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">else</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">swap</span><span
class="hl-brackets">(</span><span
class="hl-identifier">y1</span><span
class="hl-code">, </span><span
class="hl-identifier">z1</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">swap</span><span
class="hl-brackets">(</span><span
class="hl-identifier">y2</span><span
class="hl-code">, </span><span
class="hl-identifier">z2</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">swap</span><span
class="hl-brackets">(</span><span
class="hl-identifier">w</span><span
class="hl-code">, </span><span
class="hl-identifier">h</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">z1</span><span
class="hl-code"> == </span><span
class="hl-identifier">h</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">z1</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">z2</span><span
class="hl-code"> = </span><span
class="hl-identifier">h</span><span
class="hl-code"> - </span><span
class="hl-identifier">z2</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">ans</span><span
class="hl-code"> = </span><span
class="hl-identifier">maxint</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">walk</span><span
class="hl-brackets">(</span><span
class="hl-number">0</span><span
class="hl-code">, </span><span
class="hl-number">0</span><span
class="hl-code">, </span><span
class="hl-identifier">x1</span><span
class="hl-code">, </span><span
class="hl-identifier">y1</span><span
class="hl-code">, </span><span
class="hl-identifier">x2</span><span
class="hl-code">, </span><span
class="hl-identifier">y2</span><span
class="hl-code">, </span><span
class="hl-identifier">z2</span><span
class="hl-code">, </span><span
class="hl-identifier">l</span><span
class="hl-code">, </span><span
class="hl-identifier">w</span><span
class="hl-code">, </span><span
class="hl-identifier">h</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">printf</span><span
class="hl-brackets">(</span><span
class="hl-quotes">&quot;</span><span
class="hl-string">%d</span><span
class="hl-special">\</span><span
class="hl-string">n</span><span
class="hl-quotes">&quot;</span><span
class="hl-code">, </span><span
class="hl-identifier">ans</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">return</span><span
class="hl-code"> </span><span
class="hl-number">0</span><span
class="hl-code">;<br
/></span><span
class="hl-brackets">}</span></div></div></div> ]]></content:encoded> <wfw:commentRss>http://gccfeli.cn/2008/01/%e8%ae%a1%e7%ae%97%e5%87%a0%e4%bd%95-pku1444-%e9%95%bf%e6%96%b9%e4%bd%93%e6%97%8b%e8%bd%ac.html/feed</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>[杂题] pku3269 曼哈顿距离的性质</title><link>http://gccfeli.cn/2008/01/%e6%9d%82%e9%a2%98-pku3269-%e6%9b%bc%e5%93%88%e9%a1%bf%e8%b7%9d%e7%a6%bb%e7%9a%84%e6%80%a7%e8%b4%a8.html</link> <comments>http://gccfeli.cn/2008/01/%e6%9d%82%e9%a2%98-pku3269-%e6%9b%bc%e5%93%88%e9%a1%bf%e8%b7%9d%e7%a6%bb%e7%9a%84%e6%80%a7%e8%b4%a8.html#comments</comments> <pubDate>Sun, 20 Jan 2008 03:22:00 +0000</pubDate> <dc:creator>Felicia</dc:creator> <category><![CDATA[杂题]]></category> <category><![CDATA[代码]]></category><guid
isPermaLink="false">http://www.gccfeli.cn/?p=120</guid> <description><![CDATA[<p>题目意思是给出平面上n个不相邻的点，要求到这n个点的曼哈顿距离之和最小的点的个数ans2，和这个最小距离ans1。 <br/>点的坐标范围是-10000到10000（这个很重要） <br/><br/>考虑到曼哈顿距离的定义：&#124;x &#8211; x0&#124; + &#124;y &#8211; y0&#124; <br/>这个定义是线性的，对称的 <br/>因此考虑分别在两个方向上解这个问题（曼哈顿距离的性质） <br/></p> <span
class="readmore"><a
href="http://gccfeli.cn/2008/01/%e6%9d%82%e9%a2%98-pku3269-%e6%9b%bc%e5%93%88%e9%a1%bf%e8%b7%9d%e7%a6%bb%e7%9a%84%e6%80%a7%e8%b4%a8.html" title="[杂题] pku3269 曼哈顿距离的性质">阅读全文（895字）</a></span>]]></description> <content:encoded><![CDATA[<p>题目意思是给出平面上n个不相邻的点，要求到这n个点的曼哈顿距离之和最小的点的个数ans2，和这个最小距离ans1。 <br/>点的坐标范围是-10000到10000（这个很重要） <br/><br/>考虑到曼哈顿距离的定义：|x &#8211; x0| + |y &#8211; y0| <br/>这个定义是线性的，对称的 <br/>因此考虑分别在两个方向上解这个问题（曼哈顿距离的性质） <br/></p><ol><li>对于x方向，定义x曼哈顿距离是|x &#8211; x0|，因为坐标范围很小，所以可以对所有可能的坐标，做一个线性扫描，求出fx，fx[x0]表示所有点到x0这个x坐标的x曼哈顿距离之和。对y方向相应地求出fy。</li><li>有了fx和fy，我们可以用O(1)时间算出所有点到某一坐标(x0, y0)的曼哈顿距离之和ans1。现在选出fx[x0] + fy[y0]的最小值（剔除那些输入的点），这一步我是把fx和fy分别排序做的，复杂度O(nlogn)。应该能利用点的不相邻性质做得更好。</li><li>现在统计满足题意的点的个数。利用fx计算数组nx，nx[i].coor表示此点的x坐标，nx[i].num表示x坐标是nx[i].coor的点的个数，nx[i].dist表示所有点到nx[i].coor的x曼哈顿距离之和。相应地计算ny。计算数组dd，dd[i]表示所有点到第i个点的曼哈顿距离之和。令t1 = sum(nx[i].num * ny[i].num), if (nx[i].dist + ny[i].dist == ans1)。令t2 = (dd[i] == ans1) 的个数。因此ans2 = t1 &#8211; t2。</li></ol><p>下面是我的代码：</p><div
class="hl-wrapper"><div
class="hl-title">&#19979;&#36733;: <a
href="http://gccfeli.cn/wp-content/plugins/coolcode/coolcode.php?p=120&amp;download=pku3269.cpp">pku3269.cpp</a></div><div
class="hl-surround"><div
class="hl-main"><span
class="hl-mlcomment">/**********************************************************************<br
/>Author: WHU_GCC<br
/>Created Time: 2008-1-19 20:26:13<br
/>File Name: pku3269.cpp<br
/>Description: <br
/>**********************************************************************/</span><span
class="hl-code"><br
/></span><span
class="hl-prepro">#include </span><span
class="hl-quotes">&lt;</span><span
class="hl-string">iostream</span><span
class="hl-quotes">&gt;</span><span
class="hl-prepro"></span><span
class="hl-code"><br
/></span><span
class="hl-prepro">#include </span><span
class="hl-quotes">&lt;</span><span
class="hl-string">set</span><span
class="hl-quotes">&gt;</span><span
class="hl-prepro"></span><span
class="hl-code"><br
/></span><span
class="hl-reserved">using</span><span
class="hl-code"> </span><span
class="hl-types">namespace</span><span
class="hl-code"> </span><span
class="hl-identifier">std</span><span
class="hl-code">;<br
/>&nbsp;<br
/></span><span
class="hl-prepro">#define</span><span
class="hl-code"> </span><span
class="hl-identifier">out</span><span
class="hl-brackets">(</span><span
class="hl-identifier">x</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">cout</span><span
class="hl-code"> &lt;&lt; #</span><span
class="hl-identifier">x</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-quotes">&quot;</span><span
class="hl-string">: </span><span
class="hl-quotes">&quot;</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-identifier">x</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-identifier">endl</span><span
class="hl-brackets">)</span><span
class="hl-prepro"></span><span
class="hl-code"><br
/></span><span
class="hl-types">typedef</span><span
class="hl-code"> </span><span
class="hl-types">long</span><span
class="hl-code"> </span><span
class="hl-types">long</span><span
class="hl-code"> </span><span
class="hl-identifier">int64</span><span
class="hl-code">;<br
/></span><span
class="hl-types">const</span><span
class="hl-code"> </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">maxint</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-identifier">x7FFFFFFF</span><span
class="hl-code">;<br
/></span><span
class="hl-types">const</span><span
class="hl-code"> </span><span
class="hl-identifier">int64</span><span
class="hl-code"> </span><span
class="hl-identifier">maxint64</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-identifier">x7FFFFFFFFFFFFFFFLL</span><span
class="hl-code">;<br
/></span><span
class="hl-types">template</span><span
class="hl-code"> &lt;</span><span
class="hl-types">class</span><span
class="hl-code"> </span><span
class="hl-identifier">T</span><span
class="hl-code">&gt; </span><span
class="hl-types">void</span><span
class="hl-code"> </span><span
class="hl-identifier">show</span><span
class="hl-brackets">(</span><span
class="hl-identifier">T</span><span
class="hl-code"> </span><span
class="hl-identifier">a</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">n</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-brackets">{</span><span
class="hl-code"> </span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt; </span><span
class="hl-identifier">n</span><span
class="hl-code">; ++</span><span
class="hl-identifier">i</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-identifier">cout</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> &lt;&lt; ' '; </span><span
class="hl-identifier">cout</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-identifier">endl</span><span
class="hl-code">; </span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/></span><span
class="hl-types">template</span><span
class="hl-code"> &lt;</span><span
class="hl-types">class</span><span
class="hl-code"> </span><span
class="hl-identifier">T</span><span
class="hl-code">&gt; </span><span
class="hl-types">void</span><span
class="hl-code"> </span><span
class="hl-identifier">show</span><span
class="hl-brackets">(</span><span
class="hl-identifier">T</span><span
class="hl-code"> </span><span
class="hl-identifier">a</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">r</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">l</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-brackets">{</span><span
class="hl-code"> </span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt; </span><span
class="hl-identifier">r</span><span
class="hl-code">; ++</span><span
class="hl-identifier">i</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-identifier">show</span><span
class="hl-brackets">(</span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">, </span><span
class="hl-identifier">l</span><span
class="hl-brackets">)</span><span
class="hl-code">; </span><span
class="hl-identifier">cout</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-identifier">endl</span><span
class="hl-code">; </span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;<br
/></span><span
class="hl-types">const</span><span
class="hl-code"> </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">maxn</span><span
class="hl-code"> = </span><span
class="hl-number">10010</span><span
class="hl-code">;<br
/>&nbsp;<br
/></span><span
class="hl-types">struct</span><span
class="hl-code"> </span><span
class="hl-identifier">node_t</span><span
class="hl-code"><br
/></span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">dist</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">coor</span><span
class="hl-code">;<br
/></span><span
class="hl-brackets">}</span><span
class="hl-code">;<br
/>&nbsp;<br
/></span><span
class="hl-types">struct</span><span
class="hl-code"> </span><span
class="hl-identifier">num_t</span><span
class="hl-code"><br
/></span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">dist</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">num</span><span
class="hl-code">;<br
/></span><span
class="hl-brackets">}</span><span
class="hl-code">;<br
/>&nbsp;<br
/></span><span
class="hl-types">bool</span><span
class="hl-code"> </span><span
class="hl-reserved">operator</span><span
class="hl-code"> &lt;</span><span
class="hl-brackets">(</span><span
class="hl-types">const</span><span
class="hl-code"> </span><span
class="hl-identifier">node_t</span><span
class="hl-code"> &amp;</span><span
class="hl-identifier">a</span><span
class="hl-code">, </span><span
class="hl-types">const</span><span
class="hl-code"> </span><span
class="hl-identifier">node_t</span><span
class="hl-code"> &amp;</span><span
class="hl-identifier">b</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/></span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">return</span><span
class="hl-code"> </span><span
class="hl-identifier">a</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> &lt; </span><span
class="hl-identifier">b</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code">;<br
/></span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">n</span><span
class="hl-code">;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">x</span><span
class="hl-brackets">[</span><span
class="hl-identifier">maxn</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">y</span><span
class="hl-brackets">[</span><span
class="hl-identifier">maxn</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/></span><span
class="hl-identifier">node_t</span><span
class="hl-code"> </span><span
class="hl-identifier">fx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">maxn</span><span
class="hl-code"> * </span><span
class="hl-number">2</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/></span><span
class="hl-identifier">node_t</span><span
class="hl-code"> </span><span
class="hl-identifier">fy</span><span
class="hl-brackets">[</span><span
class="hl-identifier">maxn</span><span
class="hl-code"> * </span><span
class="hl-number">2</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">hx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">maxn</span><span
class="hl-code"> * </span><span
class="hl-number">2</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">hy</span><span
class="hl-brackets">[</span><span
class="hl-identifier">maxn</span><span
class="hl-code"> * </span><span
class="hl-number">2</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">minx</span><span
class="hl-code">, </span><span
class="hl-identifier">miny</span><span
class="hl-code">, </span><span
class="hl-identifier">maxx</span><span
class="hl-code">, </span><span
class="hl-identifier">maxy</span><span
class="hl-code">;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">dd</span><span
class="hl-brackets">[</span><span
class="hl-identifier">maxn</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/>&nbsp;<br
/></span><span
class="hl-identifier">set</span><span
class="hl-code"> &lt;</span><span
class="hl-identifier">pair</span><span
class="hl-code">&lt;</span><span
class="hl-types">int</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code">&gt; &gt; </span><span
class="hl-identifier">ptrset</span><span
class="hl-code">;<br
/>&nbsp;<br
/></span><span
class="hl-identifier">num_t</span><span
class="hl-code"> </span><span
class="hl-identifier">nx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">maxn</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/></span><span
class="hl-identifier">num_t</span><span
class="hl-code"> </span><span
class="hl-identifier">ny</span><span
class="hl-brackets">[</span><span
class="hl-identifier">maxn</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">lnx</span><span
class="hl-code">, </span><span
class="hl-identifier">lny</span><span
class="hl-code">;<br
/>&nbsp;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">main</span><span
class="hl-brackets">()</span><span
class="hl-code"><br
/></span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">scanf</span><span
class="hl-brackets">(</span><span
class="hl-quotes">&quot;</span><span
class="hl-string">%d</span><span
class="hl-quotes">&quot;</span><span
class="hl-code">, &amp;</span><span
class="hl-identifier">n</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">memset</span><span
class="hl-brackets">(</span><span
class="hl-identifier">hx</span><span
class="hl-code">, </span><span
class="hl-number">0</span><span
class="hl-code">, </span><span
class="hl-reserved">sizeof</span><span
class="hl-brackets">(</span><span
class="hl-identifier">hx</span><span
class="hl-brackets">))</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">memset</span><span
class="hl-brackets">(</span><span
class="hl-identifier">hy</span><span
class="hl-code">, </span><span
class="hl-number">0</span><span
class="hl-code">, </span><span
class="hl-reserved">sizeof</span><span
class="hl-brackets">(</span><span
class="hl-identifier">hy</span><span
class="hl-brackets">))</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">minx</span><span
class="hl-code"> = </span><span
class="hl-identifier">miny</span><span
class="hl-code"> = </span><span
class="hl-identifier">maxint</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">maxx</span><span
class="hl-code"> = </span><span
class="hl-identifier">maxy</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">ptrset</span><span
class="hl-code">.</span><span
class="hl-identifier">clear</span><span
class="hl-brackets">()</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt; </span><span
class="hl-identifier">n</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code">++</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">scanf</span><span
class="hl-brackets">(</span><span
class="hl-quotes">&quot;</span><span
class="hl-string">%d%d</span><span
class="hl-quotes">&quot;</span><span
class="hl-code">, &amp;</span><span
class="hl-identifier">x</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">, &amp;</span><span
class="hl-identifier">y</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">])</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">x</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> += </span><span
class="hl-number">10000</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">y</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> += </span><span
class="hl-number">10000</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">ptrset</span><span
class="hl-code">.</span><span
class="hl-identifier">insert</span><span
class="hl-brackets">(</span><span
class="hl-identifier">make_pair</span><span
class="hl-brackets">(</span><span
class="hl-identifier">x</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">, </span><span
class="hl-identifier">y</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]))</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">hx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">x</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]]</span><span
class="hl-code">++;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">hy</span><span
class="hl-brackets">[</span><span
class="hl-identifier">y</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]]</span><span
class="hl-code">++;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">minx</span><span
class="hl-code"> &lt;?= </span><span
class="hl-identifier">x</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">miny</span><span
class="hl-code"> &lt;?= </span><span
class="hl-identifier">y</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">maxx</span><span
class="hl-code"> &gt;?= </span><span
class="hl-identifier">x</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">maxy</span><span
class="hl-code"> &gt;?= </span><span
class="hl-identifier">y</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">fx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">minx</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">fx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">minx</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">coor</span><span
class="hl-code"> = </span><span
class="hl-identifier">minx</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-identifier">minx</span><span
class="hl-code"> + </span><span
class="hl-number">1</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt;= </span><span
class="hl-identifier">maxx</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code">++</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">fx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">minx</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> += </span><span
class="hl-identifier">abs</span><span
class="hl-brackets">(</span><span
class="hl-identifier">i</span><span
class="hl-code"> - </span><span
class="hl-identifier">minx</span><span
class="hl-brackets">)</span><span
class="hl-code"> * </span><span
class="hl-identifier">hx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">numrx</span><span
class="hl-code"> = </span><span
class="hl-identifier">n</span><span
class="hl-code"> - </span><span
class="hl-identifier">hx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">minx</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">nummx</span><span
class="hl-code"> = </span><span
class="hl-identifier">hx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">minx</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">numlx</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-identifier">minx</span><span
class="hl-code"> + </span><span
class="hl-number">1</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt;= </span><span
class="hl-identifier">maxx</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code">++</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">fx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> = </span><span
class="hl-identifier">fx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-code"> - </span><span
class="hl-number">1</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> + </span><span
class="hl-identifier">numlx</span><span
class="hl-code"> + </span><span
class="hl-identifier">nummx</span><span
class="hl-code"> - </span><span
class="hl-identifier">numrx</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">fx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">coor</span><span
class="hl-code"> = </span><span
class="hl-identifier">i</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">numlx</span><span
class="hl-code"> += </span><span
class="hl-identifier">nummx</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">nummx</span><span
class="hl-code"> = </span><span
class="hl-identifier">hx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">numrx</span><span
class="hl-code"> -= </span><span
class="hl-identifier">nummx</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">fy</span><span
class="hl-brackets">[</span><span
class="hl-identifier">miny</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">fy</span><span
class="hl-brackets">[</span><span
class="hl-identifier">miny</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">coor</span><span
class="hl-code"> = </span><span
class="hl-identifier">miny</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-identifier">miny</span><span
class="hl-code"> + </span><span
class="hl-number">1</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt;= </span><span
class="hl-identifier">maxy</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code">++</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">fy</span><span
class="hl-brackets">[</span><span
class="hl-identifier">miny</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> += </span><span
class="hl-identifier">abs</span><span
class="hl-brackets">(</span><span
class="hl-identifier">i</span><span
class="hl-code"> - </span><span
class="hl-identifier">miny</span><span
class="hl-brackets">)</span><span
class="hl-code"> * </span><span
class="hl-identifier">hy</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">numry</span><span
class="hl-code"> = </span><span
class="hl-identifier">n</span><span
class="hl-code"> - </span><span
class="hl-identifier">hy</span><span
class="hl-brackets">[</span><span
class="hl-identifier">miny</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">nummy</span><span
class="hl-code"> = </span><span
class="hl-identifier">hy</span><span
class="hl-brackets">[</span><span
class="hl-identifier">miny</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">numly</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-identifier">miny</span><span
class="hl-code"> + </span><span
class="hl-number">1</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt;= </span><span
class="hl-identifier">maxy</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code">++</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">fy</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> = </span><span
class="hl-identifier">fy</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-code"> - </span><span
class="hl-number">1</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> + </span><span
class="hl-identifier">numly</span><span
class="hl-code"> + </span><span
class="hl-identifier">nummy</span><span
class="hl-code"> - </span><span
class="hl-identifier">numry</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">fy</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">coor</span><span
class="hl-code"> = </span><span
class="hl-identifier">i</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">numly</span><span
class="hl-code"> += </span><span
class="hl-identifier">nummy</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">nummy</span><span
class="hl-code"> = </span><span
class="hl-identifier">hy</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">numry</span><span
class="hl-code"> -= </span><span
class="hl-identifier">nummy</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt; </span><span
class="hl-identifier">n</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code">++</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">dd</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> = </span><span
class="hl-identifier">fx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">x</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> + </span><span
class="hl-identifier">fy</span><span
class="hl-brackets">[</span><span
class="hl-identifier">y</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code">;<br
/>&nbsp;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">sort</span><span
class="hl-brackets">(</span><span
class="hl-identifier">fx</span><span
class="hl-code"> + </span><span
class="hl-identifier">minx</span><span
class="hl-code">, </span><span
class="hl-identifier">fx</span><span
class="hl-code"> + </span><span
class="hl-identifier">maxx</span><span
class="hl-code"> + </span><span
class="hl-number">1</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">sort</span><span
class="hl-brackets">(</span><span
class="hl-identifier">fy</span><span
class="hl-code"> + </span><span
class="hl-identifier">miny</span><span
class="hl-code">, </span><span
class="hl-identifier">fy</span><span
class="hl-code"> + </span><span
class="hl-identifier">maxy</span><span
class="hl-code"> + </span><span
class="hl-number">1</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">ans1</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-identifier">minx</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt;= </span><span
class="hl-identifier">maxx</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code">++</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">j</span><span
class="hl-code"> = </span><span
class="hl-identifier">miny</span><span
class="hl-code">; </span><span
class="hl-identifier">j</span><span
class="hl-code"> &lt;= </span><span
class="hl-identifier">maxy</span><span
class="hl-code">; </span><span
class="hl-identifier">j</span><span
class="hl-code">++</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">ptrset</span><span
class="hl-code">.</span><span
class="hl-identifier">count</span><span
class="hl-brackets">(</span><span
class="hl-identifier">make_pair</span><span
class="hl-brackets">(</span><span
class="hl-identifier">fx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">coor</span><span
class="hl-code">, </span><span
class="hl-identifier">fy</span><span
class="hl-brackets">[</span><span
class="hl-identifier">j</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">coor</span><span
class="hl-brackets">))</span><span
class="hl-code"> == </span><span
class="hl-number">0</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">ans1</span><span
class="hl-code"> = </span><span
class="hl-identifier">fx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> + </span><span
class="hl-identifier">fy</span><span
class="hl-brackets">[</span><span
class="hl-identifier">j</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">goto</span><span
class="hl-code"> </span><span
class="hl-identifier">end</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">end</span><span
class="hl-code">:;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">lnx</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-identifier">minx</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt;= </span><span
class="hl-identifier">maxx</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code">++</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">i</span><span
class="hl-code"> == </span><span
class="hl-identifier">minx</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">nx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">lnx</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> = </span><span
class="hl-identifier">fx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">nx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">lnx</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">num</span><span
class="hl-code"> = </span><span
class="hl-number">1</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">lnx</span><span
class="hl-code">++;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">else</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">fx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> == </span><span
class="hl-identifier">nx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">lnx</span><span
class="hl-code"> - </span><span
class="hl-number">1</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">nx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">lnx</span><span
class="hl-code"> - </span><span
class="hl-number">1</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">num</span><span
class="hl-code">++;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">else</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">nx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">lnx</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> = </span><span
class="hl-identifier">fx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">nx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">lnx</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">num</span><span
class="hl-code"> = </span><span
class="hl-number">1</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">lnx</span><span
class="hl-code">++;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">lny</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-identifier">miny</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt;= </span><span
class="hl-identifier">maxy</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code">++</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">i</span><span
class="hl-code"> == </span><span
class="hl-identifier">miny</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">ny</span><span
class="hl-brackets">[</span><span
class="hl-identifier">lny</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> = </span><span
class="hl-identifier">fy</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">ny</span><span
class="hl-brackets">[</span><span
class="hl-identifier">lny</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">num</span><span
class="hl-code"> = </span><span
class="hl-number">1</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">lny</span><span
class="hl-code">++;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">else</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">fy</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> == </span><span
class="hl-identifier">ny</span><span
class="hl-brackets">[</span><span
class="hl-identifier">lny</span><span
class="hl-code"> - </span><span
class="hl-number">1</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">ny</span><span
class="hl-brackets">[</span><span
class="hl-identifier">lny</span><span
class="hl-code"> - </span><span
class="hl-number">1</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">num</span><span
class="hl-code">++;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">else</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">ny</span><span
class="hl-brackets">[</span><span
class="hl-identifier">lny</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> = </span><span
class="hl-identifier">fy</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">ny</span><span
class="hl-brackets">[</span><span
class="hl-identifier">lny</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">num</span><span
class="hl-code"> = </span><span
class="hl-number">1</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">lny</span><span
class="hl-code">++;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">ans2</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt; </span><span
class="hl-identifier">lnx</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code">++</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">nx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> &lt;= </span><span
class="hl-identifier">ans1</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">j</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">; </span><span
class="hl-identifier">j</span><span
class="hl-code"> &lt; </span><span
class="hl-identifier">lny</span><span
class="hl-code">; </span><span
class="hl-identifier">j</span><span
class="hl-code">++</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">nx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> + </span><span
class="hl-identifier">ny</span><span
class="hl-brackets">[</span><span
class="hl-identifier">j</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> &lt;= </span><span
class="hl-identifier">ans1</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">nx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> + </span><span
class="hl-identifier">ny</span><span
class="hl-brackets">[</span><span
class="hl-identifier">j</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">dist</span><span
class="hl-code"> == </span><span
class="hl-identifier">ans1</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">ans2</span><span
class="hl-code"> += </span><span
class="hl-identifier">nx</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">num</span><span
class="hl-code"> * </span><span
class="hl-identifier">ny</span><span
class="hl-brackets">[</span><span
class="hl-identifier">j</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">num</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">else</span><span
class="hl-code"> </span><span
class="hl-reserved">break</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">else</span><span
class="hl-code"> </span><span
class="hl-reserved">break</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt; </span><span
class="hl-identifier">n</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code">++</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">dd</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> == </span><span
class="hl-identifier">ans1</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">ans2</span><span
class="hl-code">--;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">printf</span><span
class="hl-brackets">(</span><span
class="hl-quotes">&quot;</span><span
class="hl-string">%d %d</span><span
class="hl-special">\</span><span
class="hl-string">n</span><span
class="hl-quotes">&quot;</span><span
class="hl-code">, </span><span
class="hl-identifier">ans1</span><span
class="hl-code">, </span><span
class="hl-identifier">ans2</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">return</span><span
class="hl-code"> </span><span
class="hl-number">0</span><span
class="hl-code">;<br
/></span><span
class="hl-brackets">}</span></div></div></div> ]]></content:encoded> <wfw:commentRss>http://gccfeli.cn/2008/01/%e6%9d%82%e9%a2%98-pku3269-%e6%9b%bc%e5%93%88%e9%a1%bf%e8%b7%9d%e7%a6%bb%e7%9a%84%e6%80%a7%e8%b4%a8.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>[杂题] pku3263 区间性质</title><link>http://gccfeli.cn/2008/01/%e6%9d%82%e9%a2%98-pku3263-%e5%8c%ba%e9%97%b4%e6%80%a7%e8%b4%a8.html</link> <comments>http://gccfeli.cn/2008/01/%e6%9d%82%e9%a2%98-pku3263-%e5%8c%ba%e9%97%b4%e6%80%a7%e8%b4%a8.html#comments</comments> <pubDate>Sat, 12 Jan 2008 14:02:00 +0000</pubDate> <dc:creator>Felicia</dc:creator> <category><![CDATA[杂题]]></category> <category><![CDATA[代码]]></category><guid
isPermaLink="false">http://www.gccfeli.cn/?p=119</guid> <description><![CDATA[<p>这个题目本质上要解决一个问题，给出一些区间[ai, bi)和一个数组，求数组中每个元素被区间覆盖的次数。 <br/><br/>一开始想了个做法是线段树，后来想了个O(n)的做法。具体过程如下：</p><ol><li>去掉重复区间</li> <span
class="readmore"><a
href="http://gccfeli.cn/2008/01/%e6%9d%82%e9%a2%98-pku3263-%e5%8c%ba%e9%97%b4%e6%80%a7%e8%b4%a8.html" title="[杂题] pku3263 区间性质">阅读全文（495字）</a></span>]]></description> <content:encoded><![CDATA[<p>这个题目本质上要解决一个问题，给出一些区间[ai, bi)和一个数组，求数组中每个元素被区间覆盖的次数。 <br/><br/>一开始想了个做法是线段树，后来想了个O(n)的做法。具体过程如下：</p><ol><li>去掉重复区间</li><li>f数组置0</li><li>对每个区间[ai, bi)，令f[ai]++，f[bi]&#8211;</li><li>设答案数组为c，则c[i] = sum(f[j]), 1 &lt;= j &lt;= i</li></ol><p>关键是理解f数组的意义：f[i]表示第i个点对后续点的影响，而f[ai]++，f[bi]&#8211;保证了区间外的点不受影响，区间内的点都受+1的影响 <br/><br/>以下是我的代码：</p><div
class="hl-wrapper"><div
class="hl-title">&#19979;&#36733;: <a
href="http://gccfeli.cn/wp-content/plugins/coolcode/coolcode.php?p=119&amp;download=pku3263.cpp">pku3263.cpp</a></div><div
class="hl-surround"><div
class="hl-main"><span
class="hl-mlcomment">/**********************************************************************<br
/>Author: WHU_GCC<br
/>Created Time: 2008-1-12 21:14:15<br
/>File Name: pku3263.cpp<br
/>Description: <br
/>**********************************************************************/</span><span
class="hl-code"><br
/></span><span
class="hl-prepro">#include </span><span
class="hl-quotes">&lt;</span><span
class="hl-string">iostream</span><span
class="hl-quotes">&gt;</span><span
class="hl-prepro"></span><span
class="hl-code"><br
/></span><span
class="hl-reserved">using</span><span
class="hl-code"> </span><span
class="hl-types">namespace</span><span
class="hl-code"> </span><span
class="hl-identifier">std</span><span
class="hl-code">;<br
/>&nbsp;<br
/></span><span
class="hl-prepro">#define</span><span
class="hl-code"> </span><span
class="hl-identifier">out</span><span
class="hl-brackets">(</span><span
class="hl-identifier">x</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">cout</span><span
class="hl-code"> &lt;&lt; #</span><span
class="hl-identifier">x</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-quotes">&quot;</span><span
class="hl-string">: </span><span
class="hl-quotes">&quot;</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-identifier">x</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-identifier">endl</span><span
class="hl-brackets">)</span><span
class="hl-prepro"></span><span
class="hl-code"><br
/></span><span
class="hl-types">typedef</span><span
class="hl-code"> </span><span
class="hl-types">long</span><span
class="hl-code"> </span><span
class="hl-types">long</span><span
class="hl-code"> </span><span
class="hl-identifier">int64</span><span
class="hl-code">;<br
/></span><span
class="hl-types">const</span><span
class="hl-code"> </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">maxint</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-identifier">x7FFFFFFF</span><span
class="hl-code">;<br
/></span><span
class="hl-types">const</span><span
class="hl-code"> </span><span
class="hl-identifier">int64</span><span
class="hl-code"> </span><span
class="hl-identifier">maxint64</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-identifier">x7FFFFFFFFFFFFFFFLL</span><span
class="hl-code">;<br
/></span><span
class="hl-types">template</span><span
class="hl-code"> &lt;</span><span
class="hl-types">class</span><span
class="hl-code"> </span><span
class="hl-identifier">T</span><span
class="hl-code">&gt; </span><span
class="hl-types">void</span><span
class="hl-code"> </span><span
class="hl-identifier">show</span><span
class="hl-brackets">(</span><span
class="hl-identifier">T</span><span
class="hl-code"> </span><span
class="hl-identifier">a</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">n</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-brackets">{</span><span
class="hl-code"> </span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt; </span><span
class="hl-identifier">n</span><span
class="hl-code">; ++</span><span
class="hl-identifier">i</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-identifier">cout</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> &lt;&lt; ' '; </span><span
class="hl-identifier">cout</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-identifier">endl</span><span
class="hl-code">; </span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/></span><span
class="hl-types">template</span><span
class="hl-code"> &lt;</span><span
class="hl-types">class</span><span
class="hl-code"> </span><span
class="hl-identifier">T</span><span
class="hl-code">&gt; </span><span
class="hl-types">void</span><span
class="hl-code"> </span><span
class="hl-identifier">show</span><span
class="hl-brackets">(</span><span
class="hl-identifier">T</span><span
class="hl-code"> </span><span
class="hl-identifier">a</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">r</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">l</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-brackets">{</span><span
class="hl-code"> </span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt; </span><span
class="hl-identifier">r</span><span
class="hl-code">; ++</span><span
class="hl-identifier">i</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-identifier">show</span><span
class="hl-brackets">(</span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">, </span><span
class="hl-identifier">l</span><span
class="hl-brackets">)</span><span
class="hl-code">; </span><span
class="hl-identifier">cout</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-identifier">endl</span><span
class="hl-code">; </span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;<br
/></span><span
class="hl-types">const</span><span
class="hl-code"> </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">maxr</span><span
class="hl-code"> = </span><span
class="hl-number">10010</span><span
class="hl-code">;<br
/></span><span
class="hl-types">const</span><span
class="hl-code"> </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">maxn</span><span
class="hl-code"> = </span><span
class="hl-number">10010</span><span
class="hl-code">;<br
/>&nbsp;<br
/></span><span
class="hl-types">struct</span><span
class="hl-code"> </span><span
class="hl-identifier">node_t</span><span
class="hl-code"><br
/></span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">l</span><span
class="hl-code">, </span><span
class="hl-identifier">r</span><span
class="hl-code">;<br
/></span><span
class="hl-brackets">}</span><span
class="hl-code">;<br
/>&nbsp;<br
/></span><span
class="hl-types">bool</span><span
class="hl-code"> </span><span
class="hl-reserved">operator</span><span
class="hl-code"> ==</span><span
class="hl-brackets">(</span><span
class="hl-types">const</span><span
class="hl-code"> </span><span
class="hl-identifier">node_t</span><span
class="hl-code"> &amp;</span><span
class="hl-identifier">a</span><span
class="hl-code">, </span><span
class="hl-types">const</span><span
class="hl-code"> </span><span
class="hl-identifier">node_t</span><span
class="hl-code"> &amp;</span><span
class="hl-identifier">b</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/></span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">return</span><span
class="hl-code"> </span><span
class="hl-identifier">a</span><span
class="hl-code">.</span><span
class="hl-identifier">l</span><span
class="hl-code"> == </span><span
class="hl-identifier">b</span><span
class="hl-code">.</span><span
class="hl-identifier">l</span><span
class="hl-code"> &amp;&amp; </span><span
class="hl-identifier">a</span><span
class="hl-code">.</span><span
class="hl-identifier">r</span><span
class="hl-code"> == </span><span
class="hl-identifier">b</span><span
class="hl-code">.</span><span
class="hl-identifier">r</span><span
class="hl-code">;<br
/></span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;<br
/></span><span
class="hl-types">bool</span><span
class="hl-code"> </span><span
class="hl-reserved">operator</span><span
class="hl-code"> &lt;</span><span
class="hl-brackets">(</span><span
class="hl-types">const</span><span
class="hl-code"> </span><span
class="hl-identifier">node_t</span><span
class="hl-code"> &amp;</span><span
class="hl-identifier">a</span><span
class="hl-code">, </span><span
class="hl-types">const</span><span
class="hl-code"> </span><span
class="hl-identifier">node_t</span><span
class="hl-code"> &amp;</span><span
class="hl-identifier">b</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/></span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">return</span><span
class="hl-code"> </span><span
class="hl-identifier">a</span><span
class="hl-code">.</span><span
class="hl-identifier">l</span><span
class="hl-code"> &lt; </span><span
class="hl-identifier">b</span><span
class="hl-code">.</span><span
class="hl-identifier">l</span><span
class="hl-code"> || </span><span
class="hl-identifier">a</span><span
class="hl-code">.</span><span
class="hl-identifier">l</span><span
class="hl-code"> == </span><span
class="hl-identifier">b</span><span
class="hl-code">.</span><span
class="hl-identifier">l</span><span
class="hl-code"> &amp;&amp; </span><span
class="hl-identifier">a</span><span
class="hl-code">.</span><span
class="hl-identifier">r</span><span
class="hl-code"> &lt; </span><span
class="hl-identifier">b</span><span
class="hl-code">.</span><span
class="hl-identifier">r</span><span
class="hl-code">;<br
/></span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;<br
/></span><span
class="hl-identifier">node_t</span><span
class="hl-code"> </span><span
class="hl-identifier">p</span><span
class="hl-brackets">[</span><span
class="hl-identifier">maxr</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">f</span><span
class="hl-brackets">[</span><span
class="hl-identifier">maxn</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-identifier">maxn</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/>&nbsp;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">n</span><span
class="hl-code">, </span><span
class="hl-identifier">I</span><span
class="hl-code">, </span><span
class="hl-identifier">H</span><span
class="hl-code">, </span><span
class="hl-identifier">r</span><span
class="hl-code">;<br
/>&nbsp;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">main</span><span
class="hl-brackets">()</span><span
class="hl-code"><br
/></span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">scanf</span><span
class="hl-brackets">(</span><span
class="hl-quotes">&quot;</span><span
class="hl-string">%d%d%d%d</span><span
class="hl-quotes">&quot;</span><span
class="hl-code">, &amp;</span><span
class="hl-identifier">n</span><span
class="hl-code">, &amp;</span><span
class="hl-identifier">I</span><span
class="hl-code">, &amp;</span><span
class="hl-identifier">H</span><span
class="hl-code">, &amp;</span><span
class="hl-identifier">r</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt; </span><span
class="hl-identifier">r</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code">++</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">scanf</span><span
class="hl-brackets">(</span><span
class="hl-quotes">&quot;</span><span
class="hl-string">%d%d</span><span
class="hl-quotes">&quot;</span><span
class="hl-code">, &amp;</span><span
class="hl-identifier">p</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">l</span><span
class="hl-code">, &amp;</span><span
class="hl-identifier">p</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">r</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">p</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">l</span><span
class="hl-code"> &gt; </span><span
class="hl-identifier">p</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">r</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">swap</span><span
class="hl-brackets">(</span><span
class="hl-identifier">p</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">l</span><span
class="hl-code">, </span><span
class="hl-identifier">p</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">r</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">sort</span><span
class="hl-brackets">(</span><span
class="hl-identifier">p</span><span
class="hl-code">, </span><span
class="hl-identifier">p</span><span
class="hl-code"> + </span><span
class="hl-identifier">r</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">r</span><span
class="hl-code"> = </span><span
class="hl-identifier">unique</span><span
class="hl-brackets">(</span><span
class="hl-identifier">p</span><span
class="hl-code">, </span><span
class="hl-identifier">p</span><span
class="hl-code"> + </span><span
class="hl-identifier">r</span><span
class="hl-brackets">)</span><span
class="hl-code"> - </span><span
class="hl-identifier">p</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">memset</span><span
class="hl-brackets">(</span><span
class="hl-identifier">f</span><span
class="hl-code">, </span><span
class="hl-number">0</span><span
class="hl-code">, </span><span
class="hl-reserved">sizeof</span><span
class="hl-brackets">(</span><span
class="hl-identifier">f</span><span
class="hl-brackets">))</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt; </span><span
class="hl-identifier">r</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code">++</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">f</span><span
class="hl-brackets">[</span><span
class="hl-identifier">p</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">l</span><span
class="hl-code"> + </span><span
class="hl-number">1</span><span
class="hl-brackets">]</span><span
class="hl-code">--;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">f</span><span
class="hl-brackets">[</span><span
class="hl-identifier">p</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">.</span><span
class="hl-identifier">r</span><span
class="hl-brackets">]</span><span
class="hl-code">++;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-number">0</span><span
class="hl-brackets">]</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-number">1</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt;= </span><span
class="hl-identifier">n</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code">++</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> = </span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-code"> - </span><span
class="hl-number">1</span><span
class="hl-brackets">]</span><span
class="hl-code"> + </span><span
class="hl-identifier">f</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-number">1</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt;= </span><span
class="hl-identifier">n</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code">++</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">printf</span><span
class="hl-brackets">(</span><span
class="hl-quotes">&quot;</span><span
class="hl-string">%d</span><span
class="hl-special">\</span><span
class="hl-string">n</span><span
class="hl-quotes">&quot;</span><span
class="hl-code">, </span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> + </span><span
class="hl-identifier">H</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">return</span><span
class="hl-code"> </span><span
class="hl-number">0</span><span
class="hl-code">;<br
/></span><span
class="hl-brackets">}</span></div></div></div> ]]></content:encoded> <wfw:commentRss>http://gccfeli.cn/2008/01/%e6%9d%82%e9%a2%98-pku3263-%e5%8c%ba%e9%97%b4%e6%80%a7%e8%b4%a8.html/feed</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>[杂题] SPOJ744</title><link>http://gccfeli.cn/2008/01/%e6%9d%82%e9%a2%98-spoj744.html</link> <comments>http://gccfeli.cn/2008/01/%e6%9d%82%e9%a2%98-spoj744.html#comments</comments> <pubDate>Fri, 04 Jan 2008 12:45:00 +0000</pubDate> <dc:creator>Felicia</dc:creator> <category><![CDATA[杂题]]></category> <category><![CDATA[代码]]></category> <category><![CDATA[算法]]></category><guid
isPermaLink="false">http://www.gccfeli.cn/?p=118</guid> <description><![CDATA[<p>这个题目是Sherlock推荐我做的。 <br/>题目意思是给一个长度为n（n &#60;= 100000）的序列，里面的数满足1 &#60;= a[i] &#60;= n。要找一个最长的连续子串，使得这个子串是1..k的一个排列。 <br/><br/>昨天晚上mmd想了个n^(3/2)的算法，今天Sherlock想了个nlogn的算法。我一直在考虑有没有O(n)的算法。我觉得应该有的。 <br/>今天晚上吃饭的时候忽然想出来了。回来写了果然AC。 <br/><br/>下面是我的算法： <br/>注意到满足题目要求的序列必有如下性质：</p> <span
class="readmore"><a
href="http://gccfeli.cn/2008/01/%e6%9d%82%e9%a2%98-spoj744.html" title="[杂题] SPOJ744">阅读全文（839字）</a></span>]]></description> <content:encoded><![CDATA[<p>这个题目是Sherlock推荐我做的。 <br/>题目意思是给一个长度为n（n &lt;= 100000）的序列，里面的数满足1 &lt;= a[i] &lt;= n。要找一个最长的连续子串，使得这个子串是1..k的一个排列。 <br/><br/>昨天晚上mmd想了个n^(3/2)的算法，今天Sherlock想了个nlogn的算法。我一直在考虑有没有O(n)的算法。我觉得应该有的。 <br/>今天晚上吃饭的时候忽然想出来了。回来写了果然AC。 <br/><br/>下面是我的算法： <br/>注意到满足题目要求的序列必有如下性质：</p><ol><li>最大值等于长度</li><li>必含1</li><li>序列和为k * (k + 1) / 2</li><li>序列内元素不重复</li></ol><p>如果一个序列同时满足性质3，4，那么一定符合题目要求。 <br/>于是如果做了O(n)的预处理，可以用O(1)的时间验证某序列是否满足题目要求。 <br/>然后我的算法就顺理成章了：</p><ol><li>预处理s[i]，为序列的部分和</li><li>预处理rl[i]，为从i开始往右，最长的不重复序列的末端的下标</li><li>预处理m[i]，为从i开始，到i右边的第一个1（或者最右端），这一段数的最大值。</li><li>枚举左端点lp，则lp到其右边的第一个1（或者最右端）中的最大值为m[lp]。把m[lp]作为序列长度，则序列的右端点为lp + m[lp] &#8211; 1。利用s[i]和rl[i]数组可以验证这段序列是否满足题目要求，若满足，就更新最优解。</li><li>把输入序列反过来，重复步骤1－4。</li></ol><p>以上每步的时间复杂度都是O(n)，故算法总的时间复杂度也是O(n)。 <br/><br/>下面是我的代码</p><div
class="hl-wrapper"><div
class="hl-title">&#19979;&#36733;: <a
href="http://gccfeli.cn/wp-content/plugins/coolcode/coolcode.php?p=118&amp;download=spoj744.cpp">spoj744.cpp</a></div><div
class="hl-surround"><div
class="hl-main"><span
class="hl-mlcomment">/**********************************************************************<br
/>Author: WHU_GCC<br
/>Created Time: 2008-1-4 18:06:14<br
/>File Name: spoj744.cpp<br
/>Description: <br
/>**********************************************************************/</span><span
class="hl-code"><br
/></span><span
class="hl-prepro">#include </span><span
class="hl-quotes">&lt;</span><span
class="hl-string">iostream</span><span
class="hl-quotes">&gt;</span><span
class="hl-prepro"></span><span
class="hl-code"><br
/></span><span
class="hl-reserved">using</span><span
class="hl-code"> </span><span
class="hl-types">namespace</span><span
class="hl-code"> </span><span
class="hl-identifier">std</span><span
class="hl-code">;<br
/>&nbsp;<br
/></span><span
class="hl-prepro">#define</span><span
class="hl-code"> </span><span
class="hl-identifier">out</span><span
class="hl-brackets">(</span><span
class="hl-identifier">x</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">cout</span><span
class="hl-code"> &lt;&lt; #</span><span
class="hl-identifier">x</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-quotes">&quot;</span><span
class="hl-string">: </span><span
class="hl-quotes">&quot;</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-identifier">x</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-identifier">endl</span><span
class="hl-brackets">)</span><span
class="hl-prepro"></span><span
class="hl-code"><br
/></span><span
class="hl-types">typedef</span><span
class="hl-code"> </span><span
class="hl-types">long</span><span
class="hl-code"> </span><span
class="hl-types">long</span><span
class="hl-code"> </span><span
class="hl-identifier">int64</span><span
class="hl-code">;<br
/></span><span
class="hl-types">const</span><span
class="hl-code"> </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">maxint</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-identifier">x7FFFFFFF</span><span
class="hl-code">;<br
/></span><span
class="hl-types">const</span><span
class="hl-code"> </span><span
class="hl-identifier">int64</span><span
class="hl-code"> </span><span
class="hl-identifier">maxint64</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-identifier">x7FFFFFFFFFFFFFFFLL</span><span
class="hl-code">;<br
/></span><span
class="hl-types">template</span><span
class="hl-code"> &lt;</span><span
class="hl-types">class</span><span
class="hl-code"> </span><span
class="hl-identifier">T</span><span
class="hl-code">&gt; </span><span
class="hl-types">void</span><span
class="hl-code"> </span><span
class="hl-identifier">show</span><span
class="hl-brackets">(</span><span
class="hl-identifier">T</span><span
class="hl-code"> </span><span
class="hl-identifier">a</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">n</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-brackets">{</span><span
class="hl-code"> </span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt; </span><span
class="hl-identifier">n</span><span
class="hl-code">; ++</span><span
class="hl-identifier">i</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-identifier">cout</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> &lt;&lt; ' '; </span><span
class="hl-identifier">cout</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-identifier">endl</span><span
class="hl-code">; </span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/></span><span
class="hl-types">template</span><span
class="hl-code"> &lt;</span><span
class="hl-types">class</span><span
class="hl-code"> </span><span
class="hl-identifier">T</span><span
class="hl-code">&gt; </span><span
class="hl-types">void</span><span
class="hl-code"> </span><span
class="hl-identifier">show</span><span
class="hl-brackets">(</span><span
class="hl-identifier">T</span><span
class="hl-code"> </span><span
class="hl-identifier">a</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">r</span><span
class="hl-code">, </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">l</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-brackets">{</span><span
class="hl-code"> </span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt; </span><span
class="hl-identifier">r</span><span
class="hl-code">; ++</span><span
class="hl-identifier">i</span><span
class="hl-brackets">)</span><span
class="hl-code"> </span><span
class="hl-identifier">show</span><span
class="hl-brackets">(</span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">, </span><span
class="hl-identifier">l</span><span
class="hl-brackets">)</span><span
class="hl-code">; </span><span
class="hl-identifier">cout</span><span
class="hl-code"> &lt;&lt; </span><span
class="hl-identifier">endl</span><span
class="hl-code">; </span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;<br
/></span><span
class="hl-types">const</span><span
class="hl-code"> </span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">maxn</span><span
class="hl-code"> = </span><span
class="hl-number">100010</span><span
class="hl-code">;<br
/>&nbsp;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">n</span><span
class="hl-code">;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-identifier">maxn</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">s</span><span
class="hl-brackets">[</span><span
class="hl-identifier">maxn</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">rl</span><span
class="hl-brackets">[</span><span
class="hl-identifier">maxn</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">hash</span><span
class="hl-brackets">[</span><span
class="hl-identifier">maxn</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">m</span><span
class="hl-brackets">[</span><span
class="hl-identifier">maxn</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/>&nbsp;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">calc</span><span
class="hl-brackets">()</span><span
class="hl-code"><br
/></span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">s</span><span
class="hl-brackets">[</span><span
class="hl-number">0</span><span
class="hl-brackets">]</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-number">1</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt;= </span><span
class="hl-identifier">n</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code">++</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">s</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> = </span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> + </span><span
class="hl-identifier">s</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-code"> - </span><span
class="hl-number">1</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/>&nbsp;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">memset</span><span
class="hl-brackets">(</span><span
class="hl-identifier">hash</span><span
class="hl-code">, </span><span
class="hl-number">0</span><span
class="hl-code">, </span><span
class="hl-reserved">sizeof</span><span
class="hl-brackets">(</span><span
class="hl-identifier">hash</span><span
class="hl-brackets">))</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-number">1</span><span
class="hl-code">, </span><span
class="hl-identifier">j</span><span
class="hl-code"> = </span><span
class="hl-number">1</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt;= </span><span
class="hl-identifier">n</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code">++</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">while</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">j</span><span
class="hl-code"> &lt;= </span><span
class="hl-identifier">n</span><span
class="hl-code"> &amp;&amp; </span><span
class="hl-identifier">hash</span><span
class="hl-brackets">[</span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-identifier">j</span><span
class="hl-brackets">]]</span><span
class="hl-code"> == </span><span
class="hl-number">0</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">hash</span><span
class="hl-brackets">[</span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-identifier">j</span><span
class="hl-code">++</span><span
class="hl-brackets">]]</span><span
class="hl-code"> = </span><span
class="hl-number">1</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">rl</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> = </span><span
class="hl-identifier">j</span><span
class="hl-code"> - </span><span
class="hl-number">1</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">hash</span><span
class="hl-brackets">[</span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]]</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-identifier">n</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &gt;= </span><span
class="hl-number">1</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code">--</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> == </span><span
class="hl-number">1</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">m</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> = </span><span
class="hl-number">1</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">else</span><span
class="hl-code"> </span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">i</span><span
class="hl-code"> == </span><span
class="hl-identifier">n</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">m</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> = </span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">else</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">m</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> = </span><span
class="hl-identifier">max</span><span
class="hl-brackets">(</span><span
class="hl-identifier">m</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-code"> + </span><span
class="hl-number">1</span><span
class="hl-brackets">]</span><span
class="hl-code">, </span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">])</span><span
class="hl-code">;<br
/>&nbsp;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">ret</span><span
class="hl-code"> = </span><span
class="hl-number">0</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-number">1</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt;= </span><span
class="hl-identifier">n</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code">++</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-reserved">if</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-identifier">rl</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> &gt;= </span><span
class="hl-identifier">i</span><span
class="hl-code"> + </span><span
class="hl-identifier">m</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> - </span><span
class="hl-number">1</span><span
class="hl-code"> &amp;&amp; </span><span
class="hl-identifier">s</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-code"> + </span><span
class="hl-identifier">m</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> - </span><span
class="hl-number">1</span><span
class="hl-brackets">]</span><span
class="hl-code"> - </span><span
class="hl-identifier">s</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-code"> - </span><span
class="hl-number">1</span><span
class="hl-brackets">]</span><span
class="hl-code"> == </span><span
class="hl-identifier">m</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> * </span><span
class="hl-brackets">(</span><span
class="hl-identifier">m</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code"> + </span><span
class="hl-number">1</span><span
class="hl-brackets">)</span><span
class="hl-code"> / </span><span
class="hl-number">2</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">ret</span><span
class="hl-code"> &gt;?= </span><span
class="hl-identifier">m</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">]</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">return</span><span
class="hl-code"> </span><span
class="hl-identifier">ret</span><span
class="hl-code">;<br
/></span><span
class="hl-brackets">}</span><span
class="hl-code"><br
/>&nbsp;<br
/></span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">main</span><span
class="hl-brackets">()</span><span
class="hl-code"><br
/></span><span
class="hl-brackets">{</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">scanf</span><span
class="hl-brackets">(</span><span
class="hl-quotes">&quot;</span><span
class="hl-string">%d</span><span
class="hl-quotes">&quot;</span><span
class="hl-code">, &amp;</span><span
class="hl-identifier">n</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">for</span><span
class="hl-code"> </span><span
class="hl-brackets">(</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">i</span><span
class="hl-code"> = </span><span
class="hl-number">1</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code"> &lt;= </span><span
class="hl-identifier">n</span><span
class="hl-code">; </span><span
class="hl-identifier">i</span><span
class="hl-code">++</span><span
class="hl-brackets">)</span><span
class="hl-code"><br
/>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span
class="hl-identifier">scanf</span><span
class="hl-brackets">(</span><span
class="hl-quotes">&quot;</span><span
class="hl-string">%d</span><span
class="hl-quotes">&quot;</span><span
class="hl-code">, &amp;</span><span
class="hl-identifier">a</span><span
class="hl-brackets">[</span><span
class="hl-identifier">i</span><span
class="hl-brackets">])</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-types">int</span><span
class="hl-code"> </span><span
class="hl-identifier">ans</span><span
class="hl-code"> = </span><span
class="hl-identifier">calc</span><span
class="hl-brackets">()</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">reverse</span><span
class="hl-brackets">(</span><span
class="hl-identifier">a</span><span
class="hl-code"> + </span><span
class="hl-number">1</span><span
class="hl-code">, </span><span
class="hl-identifier">a</span><span
class="hl-code"> + </span><span
class="hl-identifier">n</span><span
class="hl-code"> + </span><span
class="hl-number">1</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">ans</span><span
class="hl-code"> &gt;?= </span><span
class="hl-identifier">calc</span><span
class="hl-brackets">()</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-identifier">printf</span><span
class="hl-brackets">(</span><span
class="hl-quotes">&quot;</span><span
class="hl-string">%d</span><span
class="hl-special">\</span><span
class="hl-string">n</span><span
class="hl-quotes">&quot;</span><span
class="hl-code">, </span><span
class="hl-identifier">ans</span><span
class="hl-brackets">)</span><span
class="hl-code">;<br
/>&nbsp;&nbsp; &nbsp;</span><span
class="hl-reserved">return</span><span
class="hl-code"> </span><span
class="hl-number">0</span><span
class="hl-code">;<br
/></span><span
class="hl-brackets">}</span></div></div></div> ]]></content:encoded> <wfw:commentRss>http://gccfeli.cn/2008/01/%e6%9d%82%e9%a2%98-spoj744.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced) (user agent is rejected)
Database Caching 7/15 queries in 0.007 seconds using disk

Served from: gccfeli.cn @ 2012-05-22 08:22:12 -->
