<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=38549&amp;view=findpost&amp;p=260330</guid>
        <pubDate>Tue, 09 Dec 2003 13:24:54 +0000</pubDate>
        <title>Сортировка</title>
        <link>https://forum.sources.ru/index.php?showtopic=38549&amp;view=findpost&amp;p=260330</link>
        <description><![CDATA[Visitor:  Паскаля под рукой нет. На Си -- вот:<br><b>overlay.cpp</b><!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b></b> </td></tr><tr><td id='CODE'><!--ec1-->#include &#60;stdlib.h&#62;<br>#include &#60;stdio.h&#62;<br><br>typedef struct __tagpoint{<br>	double x;<br>	int isbegin;<br>} pnt, *ppnt;<br><br>int compareOpen&#40;const void *ppnt1, const void *ppnt2&#41;<br>{<br>	if&#40;&#40;&#40;ppnt&#41;&#40;ppnt1&#41;&#41;-&#62;x &#62; &#40;&#40;ppnt&#41;&#40;ppnt2&#41;&#41;-&#62;x&#41;<br> &nbsp;return 1;<br>	if&#40;&#40;&#40;ppnt&#41;&#40;ppnt1&#41;&#41;-&#62;x &#60; &#40;&#40;ppnt&#41;&#40;ppnt2&#41;&#41;-&#62;x&#41;<br> &nbsp;return -1;<br><br>	/* Отрезки считаем открытыми, НЕ включающими свои концы */<br>	if&#40;&#40;&#40;ppnt&#41;&#40;ppnt1&#41;&#41;-&#62;isbegin &#60; &#40;&#40;ppnt&#41;&#40;ppnt2&#41;&#41;-&#62;isbegin&#41;<br> &nbsp;return -1;<br>	if&#40;&#40;&#40;ppnt&#41;&#40;ppnt1&#41;&#41;-&#62;isbegin &#62; &#40;&#40;ppnt&#41;&#40;ppnt2&#41;&#41;-&#62;isbegin&#41;<br> &nbsp;return 1;<br><br>	return 0;<br>}<br><br>int compareClosed&#40;const void *ppnt1, const void *ppnt2&#41;<br>{<br>	if&#40;&#40;&#40;ppnt&#41;&#40;ppnt1&#41;&#41;-&#62;x &#62; &#40;&#40;ppnt&#41;&#40;ppnt2&#41;&#41;-&#62;x&#41;<br> &nbsp;return 1;<br>	if&#40;&#40;&#40;ppnt&#41;&#40;ppnt1&#41;&#41;-&#62;x &#60; &#40;&#40;ppnt&#41;&#40;ppnt2&#41;&#41;-&#62;x&#41;<br> &nbsp;return -1;<br><br>	/* Отрезки считаем замкнутыми, включающими свои концы */<br>	if&#40;&#40;&#40;ppnt&#41;&#40;ppnt1&#41;&#41;-&#62;isbegin &#60; &#40;&#40;ppnt&#41;&#40;ppnt2&#41;&#41;-&#62;isbegin&#41;<br> &nbsp;return 1;<br>	if&#40;&#40;&#40;ppnt&#41;&#40;ppnt1&#41;&#41;-&#62;isbegin &#62; &#40;&#40;ppnt&#41;&#40;ppnt2&#41;&#41;-&#62;isbegin&#41;<br> &nbsp;return -1;<br><br>	return 0;<br>}<br><br>int main&#40;int argc, char* argv&#91;&#93;&#41;<br>{<br>	FILE *fin;<br>	int N, i;<br>	ppnt p;<br>	double t;<br><br>	int bestfound, cur;<br><br>	fin = fopen&#40;&#34;in.txt&#34;, &#34;rt&#34;&#41;;<br><br>	fscanf&#40;fin, &#34;%d&#34;, &amp;N&#41;;<br>	p = new pnt&#91;N*2&#93;;<br>	for&#40;i=0; i&#60;N; i++&#41;<br>	{<br> &nbsp;fscanf&#40;fin, &#34;%lf&#34;, &amp;&#40;p&#91;i*2&#93;.x&#41;&#41;;<br> &nbsp;fscanf&#40;fin, &#34;%lf&#34;, &amp;&#40;p&#91;i*2+1&#93;.x&#41;&#41;;<br> &nbsp;if&#40;p&#91;i*2&#93;.x &#62; p&#91;i*2+1&#93;.x&#41;<br> &nbsp;/* На всякий, вдруг кто начало перед концом напишет... */<br> &nbsp;{<br> &nbsp;	t = p&#91;i*2&#93;.x;<br> &nbsp;	p&#91;i*2&#93;.x = p&#91;i*2+1&#93;.x;<br> &nbsp;	p&#91;i*2+1&#93;.x = t;<br> &nbsp;}<br> &nbsp;p&#91;i*2&#93;.isbegin = 1;<br> &nbsp;p&#91;i*2+1&#93;.isbegin = 0;<br>	}<br><br>	fclose&#40;fin&#41;;<br><br>	qsort&#40;p, N*2, sizeof&#40;pnt&#41;, compareClosed&#41;;<br><br>	bestfound = cur = 0;<br>	for&#40;i=0; i&#60;N*2; i++&#41;<br> &nbsp;if&#40;p&#91;i&#93;.isbegin&#41;<br> &nbsp;	if&#40;++cur &#62; bestfound&#41; bestfound = cur; else;<br> &nbsp;else<br> &nbsp;	--cur;<br><br>	printf&#40;&#34;%d-layer overlay&#40;s&#41; found&#092;n&#34;, bestfound&#41;;<br><br>	return 0;<br>}<br><!--c2--></td></tr></table><div class='postcolor'><!--ec2--><br><b>in.txt</b><!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b></b> </td></tr><tr><td id='CODE'><!--ec1-->3<br>1 2<br>2 3<br>3 4<!--c2--></td></tr></table><div class='postcolor'><!--ec2--> ]]></description>
        <author>Visitor</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=38549&amp;view=findpost&amp;p=259480</guid>
        <pubDate>Mon, 08 Dec 2003 08:19:17 +0000</pubDate>
        <title>Сортировка</title>
        <link>https://forum.sources.ru/index.php?showtopic=38549&amp;view=findpost&amp;p=259480</link>
        <description><![CDATA[startinger:  <b>2Visitor:</b> Ну поподробнее алгоритм можно? На том же pas&#39;е или просто алгоритмически? ]]></description>
        <author>startinger</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=38549&amp;view=findpost&amp;p=259268</guid>
        <pubDate>Sun, 07 Dec 2003 20:35:00 +0000</pubDate>
        <title>Сортировка</title>
        <link>https://forum.sources.ru/index.php?showtopic=38549&amp;view=findpost&amp;p=259268</link>
        <description><![CDATA[Visitor:  Да вы чего <!--emo&:(--><img src='http://forum.sources.ru/html/emoticons/sad.gif' border='0' style='vertical-align:middle' alt='sad.gif' /><!--endemo--><br><br>Если отрезки змкнутые (включают в себя свои концы), нужно при одинаковой координате первыми ставить начала отрезков, если открытые -- сначала ставить концы. И считать количество пересекшихся -- работает для любых, хоть трижды вырожденных отрезков. ]]></description>
        <author>Visitor</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=38549&amp;view=findpost&amp;p=259240</guid>
        <pubDate>Sun, 07 Dec 2003 18:54:29 +0000</pubDate>
        <title>Сортировка</title>
        <link>https://forum.sources.ru/index.php?showtopic=38549&amp;view=findpost&amp;p=259240</link>
        <description><![CDATA[startinger:  Понимаешь, albom, всё бы вроде бы хоршо, но на некоторых <br>тестах сортировка, которую ты предлагаешь, даёт сбой.<br>Уже при 6 отрезках есть много вариантов, где одно число<br>при сортировке становится не на свое место.<br>Например,<br>2 7 7 7 3 7 5 11 7 7 1 7<br>Результат: 1 2 3 7 5 7 7 7 7 7 7 11<br>Можно еще затестить варианты:<br>1 7 4 7 6 7 5 7 1 7 2 11<br>1 10 3 9 9 11 4 7 1 7 3 7<br>Даже есть варианты, когда получается совсем печально:<br>1 7 3 9 9 11 4 7 1 7 3 7<br>Результат: 1 1 3 3 7 4 7 9 9 7 7 11<br><br>Искать недочёт пока нет времени, я тут написал вещь<br>пообъёмнее, но вроде работает корректно. В <br>сформированном массиве упорядочиваются по убыванию<br>флаги у одинаковых элементов массива Pos в <br>процедуре flagsort, которая использует процедуру<br>invsort-это quicksort по убыванию.<br>Но это уже по сложности побольше, чем N*LogN, может<br>быть можно оптимизнуть, ну, например, сделать одну<br>quicksort, передавая в качестве параметра возраст. или<br>убывание делать, и сам массив. Или доработать алгоритм<br>albom&#39;а.<br><br><!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b></b> </td></tr><tr><td id='CODE'><!--ec1--><br>var n,nn,j,i&#58;integer;<br> &nbsp; pos&#58;array&#91;1..100&#93;of integer;<br> &nbsp; flag&#58;array&#91;1..100&#93;of shortint;<br> &nbsp; cur,max&#58;integer;<br> &nbsp; tl,tr&#58;integer; {границы в сортировке массива flag}<br><br>procedure sort&#40;l,r&#58; integer&#41;;<br>var<br> i,j,x,y&#58; integer;<br>begin<br> i&#58;=l; j&#58;=r; x&#58;=pos&#91;&#40;l+r&#41; DIV 2&#93;;<br> repeat<br> &nbsp; while pos&#91;i&#93;&#60;x do i&#58;=i+1;<br> &nbsp; while x&#60;pos&#91;j&#93; do j&#58;=j-1;<br> &nbsp; if i&#60;=j then<br> &nbsp; begin<br> &nbsp; &nbsp; y&#58;=pos&#91;i&#93;; pos&#91;i&#93;&#58;=pos&#91;j&#93;; pos&#91;j&#93;&#58;=y;<br> &nbsp; &nbsp; y&#58;=flag&#91;i&#93;;flag&#91;i&#93;&#58;=flag&#91;j&#93;;flag&#91;j&#93;&#58;=y;<br><br> &nbsp; &nbsp; i&#58;=i+1; j&#58;=j-1;<br> &nbsp; end;<br> until i&#62;j;<br> if l&#60;j then sort&#40;l,j&#41;;<br> if i&#60;r then sort&#40;i,r&#41;;<br>end;<br><br>procedure invsort&#40;l,r&#58;integer&#41;;<br>var i,j,x,y&#58;integer;<br>begin<br> i&#58;=l; j&#58;=r; x&#58;=flag&#91;&#40;l+r&#41; DIV 2&#93;;<br> repeat<br> &nbsp; while flag&#91;i&#93;&#62;x do i&#58;=i+1;<br> &nbsp; while x&#62;flag&#91;j&#93; do j&#58;=j-1;<br> &nbsp; if i&#60;=j then<br> &nbsp; &nbsp; begin<br> &nbsp; &nbsp; y&#58;=flag&#91;i&#93;;flag&#91;i&#93;&#58;=flag&#91;j&#93;;flag&#91;j&#93;&#58;=y;<br> &nbsp; &nbsp; i&#58;=i+1; j&#58;=j-1;<br> &nbsp; &nbsp; end;<br> until i&#62;j;<br> if l&#60;j then invsort&#40;l,j&#41;;<br> if i&#60;r then invsort&#40;i,r&#41;;<br>end;<br><br>procedure flagsort;<br>var exist&#58;boolean; k&#58;integer;<br>begin<br>k&#58;=1; tl&#58;=0; tr&#58;=0;<br>while k&#60;nn do<br> &nbsp;begin<br> &nbsp;exist&#58;=false;<br> &nbsp;while pos&#91;k&#93;=pos&#91;k+1&#93; do<br> &nbsp; &nbsp;begin<br> &nbsp; &nbsp;exist&#58;=true;<br> &nbsp; &nbsp;if &#40;k&#62;1&#41; and &#40;pos&#91;k&#93;&#60;&#62;pos&#91;k-1&#93;&#41; then tl&#58;=k;<br> &nbsp; &nbsp;inc&#40;k&#41;;<br> &nbsp; &nbsp;end;<br> &nbsp;if exist then<br> &nbsp; &nbsp;begin<br> &nbsp; &nbsp;if tl=0 then tl&#58;=1;<br> &nbsp; &nbsp;tr&#58;=k;<br> &nbsp; &nbsp;invsort&#40;tl,tr&#41;;<br> &nbsp; &nbsp;end;<br> &nbsp;inc&#40;k&#41;;<br> &nbsp;end;<br>end;<br><br>begin<br>readln&#40;n&#41;;<br>nn&#58;=n*2;<br>j&#58;=1;<br>for i&#58;=1 to n do<br>begin<br>readln&#40;pos&#91;j&#93;,pos&#91;j+1&#93;&#41;;flag&#91;j&#93;&#58;=+1;flag&#91;j+1&#93;&#58;=-1;inc&#40;j,2&#41;;<br>end;<br>sort&#40;1,nn&#41;;<br>flagsort;<br>cur&#58;=0;<br>max&#58;=0;<br>for i&#58;=1 to nn do<br>begin<br>inc&#40;cur,flag&#91;i&#93;&#41;;<br>if cur&#62;max then<br> max&#58;=cur;<br>end;<br><br>writeln&#40;max&#41;;<br>end.<!--c2--></td></tr></table><div class='postcolor'><!--ec2--> ]]></description>
        <author>startinger</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=38549&amp;view=findpost&amp;p=258412</guid>
        <pubDate>Fri, 05 Dec 2003 19:02:37 +0000</pubDate>
        <title>Сортировка</title>
        <link>https://forum.sources.ru/index.php?showtopic=38549&amp;view=findpost&amp;p=258412</link>
        <description><![CDATA[albom:  Ну смотри, в той программе точки сортировались при помощи сранения <b>pos[i]&lt;x</b>.<br>
А что бы считать вырожденные отрезки, этого сравненея недостаточно.<br>
Можно даже ввести функцию:<!--c1--></div><table border=&#39;0&#39; align=&#39;center&#39; width=&#39;95%&#39; cellpadding=&#39;3&#39; cellspacing=&#39;1&#39;><tr><td><b></b> </td></tr><tr><td id=&#39;CODE&#39;><!--ec1-->function less&#40;a,b&#58;integer&#41;&#58;boolean;<br>
 begin<br>
 if pos&#91;a&#93;&#60;pos&#91;b&#93; then less&#58;=true<br>
 else if pos&#91;a&#93;&#62;pos&#91;b&#93; then less&#58;=false<br>
 else less&#58;=flag&#91;a&#93;&#62;flag&#91;b&#93;<br>
 end;<!--c2--></td></tr></table><div class=&#39;postcolor&#39;><!--ec2--><br>
Тогда изменится и процедура sort, вот так:<!--c1--></div><table border=&#39;0&#39; align=&#39;center&#39; width=&#39;95%&#39; cellpadding=&#39;3&#39; cellspacing=&#39;1&#39;><tr><td><b></b> </td></tr><tr><td id=&#39;CODE&#39;><!--ec1-->procedure sort&#40;l,r&#58; integer&#41;;<br>
var<br>
 i,j,x,y&#58; integer;<br>
begin<br>
 i&#58;=l; j&#58;=r; x&#58;=&#40;l+r&#41; DIV 2;<br>
 repeat<br>
 &nbsp; while less&#40;i,x&#41; do i&#58;=i+1;<br>
 &nbsp; while less&#40;x,j&#41; do j&#58;=j-1;<br>
 &nbsp; if i&#60;=j then<br>
 &nbsp; begin<br>
 &nbsp; &nbsp; y&#58;=pos&#91;i&#93;; pos&#91;i&#93;&#58;=pos&#91;j&#93;; pos&#91;j&#93;&#58;=y;<br>
 &nbsp; &nbsp; y&#58;=flag&#91;i&#93;;flag&#91;i&#93;&#58;=flag&#91;j&#93;;flag&#91;j&#93;&#58;=y;<br>
<br>
 &nbsp; &nbsp; i&#58;=i+1; j&#58;=j-1;<br>
 &nbsp; end;<br>
 until i&#62;j;<br>
 if l&#60;j then sort&#40;l,j&#41;;<br>
 if i&#60;r then sort&#40;i,r&#41;;<br>
end;<!--c2--></td></tr></table><div class=&#39;postcolor&#39;><!--ec2--><br>
   ]]></description>
        <author>albom</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=38549&amp;view=findpost&amp;p=257854</guid>
        <pubDate>Fri, 05 Dec 2003 04:49:22 +0000</pubDate>
        <title>Сортировка</title>
        <link>https://forum.sources.ru/index.php?showtopic=38549&amp;view=findpost&amp;p=257854</link>
        <description><![CDATA[startinger:  А если рассмотреть вырожденный отрезок, т.е. точку, то при тестировании алгоритм иногда её считает почему-то, а иногда нет, т.к. сначала добавляет +1, а затем вычитает её приблизительно в том же месте или что-то вроде, т.е. точка засчитывается как 0-отрезок. А нужно считать её за реальный отрезок. Например,<br>1 11<br>2 12<br>3 6<br>3 3<br>1 7<br>3 7<br>1 2<br>3 3<br>Алгоритм должен выдать 7 отрезков.<br>3 3<br>Алгоритм должен выдать 1 отрезок.<br>Как бы поаккуратнее исправить? Просто иногда алгоритм всё-таки считает такие отрезки. Если вспомню тест, выложу. ]]></description>
        <author>startinger</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=38549&amp;view=findpost&amp;p=250196</guid>
        <pubDate>Sat, 22 Nov 2003 09:35:11 +0000</pubDate>
        <title>Сортировка</title>
        <link>https://forum.sources.ru/index.php?showtopic=38549&amp;view=findpost&amp;p=250196</link>
        <description><![CDATA[Visitor:  Честно говоря тоже не очень понял... <!--emo&:)--><img src='http://forum.sources.ru/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo--> но, _должно_ быть что-то вроде:<br><br>1.Отсортировали все концы отрезков в массив пар (координата, признак начала отрезка):<br>2.Двигаемся по етому массиву:<br>3.==Очередная координата имеет &quot;признак начала&quot;?<br>4.==Да. Увеличиваем число пересекающихся отрезков<br>5.====Число пересекающихся отрезков больше последнего запомненного?<br>6.====Да. Последнее запомненне = (координата, число отрезков)<br>7.====Нет. Пофих.<br>8.==Нет. Уменьшаем число пересекающихся отрезков.<br>9.Пока массив не кончится. ]]></description>
        <author>Visitor</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=38549&amp;view=findpost&amp;p=250172</guid>
        <pubDate>Sat, 22 Nov 2003 08:08:02 +0000</pubDate>
        <title>Сортировка</title>
        <link>https://forum.sources.ru/index.php?showtopic=38549&amp;view=findpost&amp;p=250172</link>
        <description><![CDATA[esperanto: <!--QuoteBegin-albom+21.11.03, 17:39--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>Цитата</b> (albom @ 21.11.03, 17:39)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> Вот такой вариант:<!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b></b> </td></tr><tr><td id='CODE'><!--ec1-->var n,nn,j,i&#58;integer;<br>    pos&#58;array&#91;1..100&#93;of integer;<br>    flag&#58;array&#91;1..100&#93;of shortint;<br>    cur,max&#58;integer;<br><br>procedure sort&#40;l,r&#58; integer&#41;;<br>var<br>  i,j,x,y&#58; integer;<br>begin<br>  i&#58;=l; j&#58;=r; x&#58;=pos&#91;&#40;l+r&#41; DIV 2&#93;;<br>  repeat<br>    while pos&#91;i&#93;&#60;x do i&#58;=i+1;<br>    while x&#60;pos&#91;j&#93; do j&#58;=j-1;<br>    if i&#60;=j then<br>    begin<br>      y&#58;=pos&#91;i&#93;; pos&#91;i&#93;&#58;=pos&#91;j&#93;; pos&#91;j&#93;&#58;=y;<br>      y&#58;=flag&#91;i&#93;;flag&#91;i&#93;&#58;=flag&#91;j&#93;;flag&#91;j&#93;&#58;=y;<br><br>      i&#58;=i+1; j&#58;=j-1;<br>    end;<br>  until i&#62;j;<br>  if l&#60;j then sort&#40;l,j&#41;;<br>  if i&#60;r then sort&#40;i,r&#41;;<br>end;<br><br>begin<br>readln&#40;n&#41;;<br>nn&#58;=n*2;<br>j&#58;=1;<br>for i&#58;=1 to n do<br> begin<br> readln&#40;pos&#91;j&#93;,pos&#91;j+1&#93;&#41;;flag&#91;j&#93;&#58;=+1;flag&#91;j+1&#93;&#58;=-1;inc&#40;j,2&#41;;<br> end;<br>sort&#40;1,nn&#41;;<br>cur&#58;=0;<br>max&#58;=0;<br>for i&#58;=1 to nn do<br> begin<br> inc&#40;cur,flag&#91;i&#93;&#41;;<br> if cur&#62;max then<br>  max&#58;=cur;<br> end;<br><br>writeln&#40;max&#41;;<br>end.<!--c2--></td></tr></table><div class='postcolor'><!--ec2--><br>Правда тут используется быстрая сортировка, которая в наихудшем случае дает сложность N^2.<br>Просто не вспомнил запись алгоритма древесной сортировки (с максимальной сложностью N*logN). <!--QuoteEnd--> </td></tr></table><div class='postcolor'> <!--QuoteEEnd--><br> как говорил наш преподаватель я не компилятор напишите идею чтобы было понятно<br><br> ]]></description>
        <author>esperanto</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=38549&amp;view=findpost&amp;p=249975</guid>
        <pubDate>Fri, 21 Nov 2003 18:39:01 +0000</pubDate>
        <title>Сортировка</title>
        <link>https://forum.sources.ru/index.php?showtopic=38549&amp;view=findpost&amp;p=249975</link>
        <description><![CDATA[albom:  Вот такой вариант:<!--c1--></div><table border=&#39;0&#39; align=&#39;center&#39; width=&#39;95%&#39; cellpadding=&#39;3&#39; cellspacing=&#39;1&#39;><tr><td><b></b> </td></tr><tr><td id=&#39;CODE&#39;><!--ec1-->var n,nn,j,i&#58;integer;<br> &nbsp; &nbsp;pos&#58;array&#91;1..100&#93;of integer;<br> &nbsp; &nbsp;flag&#58;array&#91;1..100&#93;of shortint;<br> &nbsp; &nbsp;cur,max&#58;integer;<br><br>procedure sort&#40;l,r&#58; integer&#41;;<br>var<br> &nbsp;i,j,x,y&#58; integer;<br>begin<br> &nbsp;i&#58;=l; j&#58;=r; x&#58;=pos&#91;&#40;l+r&#41; DIV 2&#93;;<br> &nbsp;repeat<br> &nbsp; &nbsp;while pos&#91;i&#93;&#60;x do i&#58;=i+1;<br> &nbsp; &nbsp;while x&#60;pos&#91;j&#93; do j&#58;=j-1;<br> &nbsp; &nbsp;if i&#60;=j then<br> &nbsp; &nbsp;begin<br> &nbsp; &nbsp; &nbsp;y&#58;=pos&#91;i&#93;; pos&#91;i&#93;&#58;=pos&#91;j&#93;; pos&#91;j&#93;&#58;=y;<br> &nbsp; &nbsp; &nbsp;y&#58;=flag&#91;i&#93;;flag&#91;i&#93;&#58;=flag&#91;j&#93;;flag&#91;j&#93;&#58;=y;<br><br> &nbsp; &nbsp; &nbsp;i&#58;=i+1; j&#58;=j-1;<br> &nbsp; &nbsp;end;<br> &nbsp;until i&#62;j;<br> &nbsp;if l&#60;j then sort&#40;l,j&#41;;<br> &nbsp;if i&#60;r then sort&#40;i,r&#41;;<br>end;<br><br>begin<br>readln&#40;n&#41;;<br>nn&#58;=n*2;<br>j&#58;=1;<br>for i&#58;=1 to n do<br> begin<br> readln&#40;pos&#91;j&#93;,pos&#91;j+1&#93;&#41;;flag&#91;j&#93;&#58;=+1;flag&#91;j+1&#93;&#58;=-1;inc&#40;j,2&#41;;<br> end;<br>sort&#40;1,nn&#41;;<br>cur&#58;=0;<br>max&#58;=0;<br>for i&#58;=1 to nn do<br> begin<br> inc&#40;cur,flag&#91;i&#93;&#41;;<br> if cur&#62;max then<br> &nbsp;max&#58;=cur;<br> end;<br><br>writeln&#40;max&#41;;<br>end.<!--c2--></td></tr></table><div class=&#39;postcolor&#39;><!--ec2--><br>Правда тут используется быстрая сортировка, которая в наихудшем случае дает сложность N^2.<br>Просто не вспомнил запись алгоритма древесной сортировки (с максимальной сложностью N*logN). ]]></description>
        <author>albom</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=38549&amp;view=findpost&amp;p=249671</guid>
        <pubDate>Fri, 21 Nov 2003 12:20:36 +0000</pubDate>
        <title>Сортировка</title>
        <link>https://forum.sources.ru/index.php?showtopic=38549&amp;view=findpost&amp;p=249671</link>
        <description><![CDATA[startinger:   На прямой дано N отрезков с координатами (a[i]; b[i]).  1&lt;=i&lt;=N. Найти максимальное k, для которого существет точка на прямой, покрытая k отрезками. За <span style='color:red'><span style='font-size:14pt;line-height:100%'>N*logN</span></span> операций ]]></description>
        <author>startinger</author>
        <category>Алгоритмы</category>
      </item>
	
      </channel>
      </rss>
	