<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://acm.khpnets.info/w39/index.php?action=history&amp;feed=atom&amp;title=E-olymp_686</id>
	<title>E-olymp 686 - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://acm.khpnets.info/w39/index.php?action=history&amp;feed=atom&amp;title=E-olymp_686"/>
	<link rel="alternate" type="text/html" href="https://acm.khpnets.info/w39/index.php?title=E-olymp_686&amp;action=history"/>
	<updated>2026-05-13T12:04:06Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://acm.khpnets.info/w39/index.php?title=E-olymp_686&amp;diff=2056&amp;oldid=prev</id>
		<title>Ctrlalt в 00:51, 22 июля 2016</title>
		<link rel="alternate" type="text/html" href="https://acm.khpnets.info/w39/index.php?title=E-olymp_686&amp;diff=2056&amp;oldid=prev"/>
		<updated>2016-07-22T00:51:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 00:51, 22 июля 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l107&quot;&gt;Строка 107:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 107:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: Сборник задач: E-olymp]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: Сборник задач: E-olymp]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: Задачи: Декартово дерево]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: Задачи: Декартово дерево]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: Задачи: &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;set&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: Задачи: &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Множество&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ctrlalt</name></author>
	</entry>
	<entry>
		<id>https://acm.khpnets.info/w39/index.php?title=E-olymp_686&amp;diff=2011&amp;oldid=prev</id>
		<title>Ctrlalt в 22:15, 24 апреля 2016</title>
		<link rel="alternate" type="text/html" href="https://acm.khpnets.info/w39/index.php?title=E-olymp_686&amp;diff=2011&amp;oldid=prev"/>
		<updated>2016-04-24T22:15:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 22:15, 24 апреля 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l107&quot;&gt;Строка 107:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 107:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: Сборник задач: E-olymp]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: Сборник задач: E-olymp]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: Задачи: Декартово дерево]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: Задачи: Декартово дерево]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category: Задачи: set]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ctrlalt</name></author>
	</entry>
	<entry>
		<id>https://acm.khpnets.info/w39/index.php?title=E-olymp_686&amp;diff=2009&amp;oldid=prev</id>
		<title>Ctrlalt: Новая страница: «== Ссылки на задачу == * [http://www.e-olymp.com/ru/problems/686 E-olymp #686 &amp;mdash; Следующий] * [http://informatics.mccme.ru/mod/stateme…»</title>
		<link rel="alternate" type="text/html" href="https://acm.khpnets.info/w39/index.php?title=E-olymp_686&amp;diff=2009&amp;oldid=prev"/>
		<updated>2016-04-24T22:13:59Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «== Ссылки на задачу == * [http://www.e-olymp.com/ru/problems/686 E-olymp #686 — Следующий] * [http://informatics.mccme.ru/mod/stateme…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Ссылки на задачу ==&lt;br /&gt;
* [http://www.e-olymp.com/ru/problems/686 E-olymp #686 &amp;amp;mdash; Следующий]&lt;br /&gt;
* [http://informatics.mccme.ru/mod/statements/view3.php?chapterid=2782 МЦНМО #2782 &amp;amp;mdash; Следующий]&lt;br /&gt;
&lt;br /&gt;
== Похожие задачи ==&lt;br /&gt;
* [[МЦНМО 2782]]&lt;br /&gt;
&lt;br /&gt;
== Решение ==&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;algorithm&amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 class Treap {&lt;br /&gt;
 &lt;br /&gt;
     struct TreapNode {&lt;br /&gt;
         int key, priority, keysMin;&lt;br /&gt;
         TreapNode *left, *right;&lt;br /&gt;
         TreapNode(int key) : key(key), keysMin(key), priority(rand()), left(0), right(0) {}&lt;br /&gt;
     } *root;&lt;br /&gt;
 &lt;br /&gt;
     int getKeysMin(TreapNode *node) {&lt;br /&gt;
         return node ? node-&amp;gt;keysMin : 1 &amp;lt;&amp;lt; 30;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     void update(TreapNode *node) {&lt;br /&gt;
         if (!node)&lt;br /&gt;
             return;&lt;br /&gt;
         node-&amp;gt;keysMin = min(node-&amp;gt;key, min(getKeysMin(node-&amp;gt;left), getKeysMin(node-&amp;gt;right)));&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     TreapNode *merge(TreapNode *a, TreapNode *b) {&lt;br /&gt;
         if (!a || !b)&lt;br /&gt;
             return a ? a : b;&lt;br /&gt;
         if (a-&amp;gt;priority &amp;gt; b-&amp;gt;priority) {&lt;br /&gt;
             a-&amp;gt;right = merge(a-&amp;gt;right, b);&lt;br /&gt;
             update(a);&lt;br /&gt;
             return a;&lt;br /&gt;
         } else {&lt;br /&gt;
             b-&amp;gt;left = merge(a, b-&amp;gt;left);&lt;br /&gt;
             update(b);&lt;br /&gt;
             return b;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     void split(TreapNode *t, int splitKey, TreapNode *&amp;amp;a, TreapNode *&amp;amp;b) {&lt;br /&gt;
         if (!t) {&lt;br /&gt;
             a = b = 0;&lt;br /&gt;
             return;&lt;br /&gt;
         }&lt;br /&gt;
         if (t-&amp;gt;key &amp;lt; splitKey) {&lt;br /&gt;
             split(t-&amp;gt;right, splitKey, t-&amp;gt;right, b);&lt;br /&gt;
             a = t;&lt;br /&gt;
         } else {&lt;br /&gt;
             split(t-&amp;gt;left, splitKey, a, t-&amp;gt;left);&lt;br /&gt;
             b = t;&lt;br /&gt;
         }&lt;br /&gt;
         update(a);&lt;br /&gt;
         update(b);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
 public:&lt;br /&gt;
 &lt;br /&gt;
     Treap() : root(0) {}&lt;br /&gt;
 &lt;br /&gt;
     void insertUnique(int key) {&lt;br /&gt;
         TreapNode *tLess, *tEqual, *tGreater;&lt;br /&gt;
         split(root, key, tLess, tGreater);&lt;br /&gt;
         split(tGreater, key + 1, tEqual, tGreater);&lt;br /&gt;
         if (!tEqual)&lt;br /&gt;
             tEqual = new TreapNode(key);&lt;br /&gt;
         root = merge(tLess, merge(tEqual, tGreater));&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     int next(int key) {&lt;br /&gt;
         TreapNode *tLess, *tNotLess;&lt;br /&gt;
         split(root, key, tLess, tNotLess);&lt;br /&gt;
         int result = getKeysMin(tNotLess);&lt;br /&gt;
         root = merge(tLess, tNotLess);&lt;br /&gt;
         return result != 1 &amp;lt;&amp;lt; 30 ? result : -1;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
 } treap;&lt;br /&gt;
 &lt;br /&gt;
 int main() {&lt;br /&gt;
     freopen(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;, stdin);&lt;br /&gt;
     freopen(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;, stdout);&lt;br /&gt;
 &lt;br /&gt;
     int queriesCount;&lt;br /&gt;
     scanf(&amp;quot;%d&amp;quot;, &amp;amp;queriesCount);&lt;br /&gt;
     int previousResult = 0;&lt;br /&gt;
     for (int i = 0; i &amp;lt; queriesCount; i++) {&lt;br /&gt;
         char queryType;&lt;br /&gt;
         int key;&lt;br /&gt;
         scanf(&amp;quot; %c%d&amp;quot;, &amp;amp;queryType, &amp;amp;key);&lt;br /&gt;
         if (queryType == &amp;#039;+&amp;#039;) {&lt;br /&gt;
             treap.insertUnique((key + previousResult) % (int)1e9);&lt;br /&gt;
             previousResult = 0;&lt;br /&gt;
         } else {&lt;br /&gt;
             previousResult = treap.next(key);&lt;br /&gt;
             printf(&amp;quot;%d\n&amp;quot;, previousResult);&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[Category: Сборник задач: E-olymp]]&lt;br /&gt;
[[Category: Задачи: Декартово дерево]]&lt;/div&gt;</summary>
		<author><name>Ctrlalt</name></author>
	</entry>
</feed>