<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>11088 - End up with more teams/11088</filename>
    </added>
    <added>
      <filename>11088 - End up with more teams/11088.2</filename>
    </added>
    <added>
      <filename>11088 - End up with more teams/11088.2.cpp</filename>
    </added>
    <added>
      <filename>11088 - End up with more teams/11088.3</filename>
    </added>
    <added>
      <filename>11088 - End up with more teams/11088.3.cpp</filename>
    </added>
    <added>
      <filename>11088 - End up with more teams/11088.cpp</filename>
    </added>
    <added>
      <filename>11088 - End up with more teams/in.txt</filename>
    </added>
    <added>
      <filename>11282 - Mixing invitations/11282</filename>
    </added>
    <added>
      <filename>11282 - Mixing invitations/11282.cpp</filename>
    </added>
    <added>
      <filename>11481 - Arrange the Numbers/11481</filename>
    </added>
    <added>
      <filename>11481 - Arrange the Numbers/11481.cpp</filename>
    </added>
    <added>
      <filename nil="true"></filename>
    </added>
    <added>
      <filename nil="true"></filename>
    </added>
    <added>
      <filename nil="true"></filename>
    </added>
    <added>
      <filename nil="true"></filename>
    </added>
    <added>
      <filename nil="true"></filename>
    </added>
    <added>
      <filename nil="true"></filename>
    </added>
    <added>
      <filename>11481 - Arrange the Numbers/in.txt</filename>
    </added>
    <added>
      <filename>11484 - Document Object Model/document</filename>
    </added>
    <added>
      <filename>11488 - Hyper prefix sets/11488</filename>
    </added>
    <added>
      <filename>11488 - Hyper prefix sets/11488.cpp</filename>
    </added>
    <added>
      <filename>11488 - Hyper prefix sets/in.txt</filename>
    </added>
    <added>
      <filename>Documentation/gridpaper.pdf</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/manual.out</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/combinatoria/highlight.sh</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/combinatoria/pascal_triangle.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/combinatoria/pascal_triangle.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/dp/highlight.sh</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/dp/particion_troncos.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/dp/particion_troncos.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/geometria/highlight.sh</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/geometria/is_convex_polygon.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/geometria/is_convex_polygon.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/geometria/is_inside_concave_polygon.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/geometria/is_inside_concave_polygon.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/geometria/is_inside_convex_polygon.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/geometria/is_inside_convex_polygon.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/geometria/polygon_area.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/geometria/polygon_area.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/grafos/bellman.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/grafos/bellman.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/highlight.sh</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/java/highlight.sh</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/java/maps_sets.java</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/java/maps_sets.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/java/priority_queue.java</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/java/priority_queue.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/misc/highlight.sh</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/misc/parser_recursivo_desc.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/misc/parser_recursivo_desc.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/number_theory/highlight.sh</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/manual.aux</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/manual.dvi</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/manual.log</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/manual.lol</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/manual.out</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/manual.pdf</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/manual.ps</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/manual.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/manual.toc</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/c++/fgetws.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/c++/fgetws.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/c++/io_file.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/c++/io_file.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/c++/unicode.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/c++/unicode.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/combinatoria/highlight.sh</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/combinatoria/pascal_triangle.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/combinatoria/pascal_triangle.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/dp/highlight.sh</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/dp/lcs.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/dp/lcs.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/dp/particion_troncos.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/dp/particion_troncos.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/geometria/distance_point_to_line.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/geometria/distance_point_to_line.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/geometria/distance_point_to_segment.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/geometria/distance_point_to_segment.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/geometria/grahamscan.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/geometria/grahamscan.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/geometria/highlight.sh</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/geometria/is_convex_polygon.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/geometria/is_convex_polygon.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/geometria/is_inside_concave_polygon.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/geometria/is_inside_concave_polygon.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/geometria/is_inside_convex_polygon.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/geometria/is_inside_convex_polygon.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/geometria/monotonechain.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/geometria/monotonechain.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/geometria/polygon_area.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/geometria/polygon_area.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/grafos/bellman.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/grafos/bellman.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/grafos/dijkstra.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/grafos/dijkstra.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/grafos/floyd.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/grafos/floyd.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/grafos/ford_fulkerson.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/grafos/ford_fulkerson.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/grafos/highlight.sh</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/grafos/kruskal.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/grafos/kruskal.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/grafos/prim.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/grafos/prim.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/grafos/puntos_articulacion.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/grafos/puntos_articulacion.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/highlight.sh</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/java/.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/java/highlight.sh</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/java/io_estandar.java</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/java/io_estandar.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/java/io_estandar_easy.java</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/java/io_estandar_easy.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/java/io_file.java</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/java/io_file.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/java/maps_sets.java</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/java/maps_sets.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/java/priority_queue.java</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/java/priority_queue.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/misc/highlight.sh</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/misc/parser_recursivo_desc.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/misc/parser_recursivo_desc.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/number_theory/bigmod.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/number_theory/bigmod.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/number_theory/criba.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/number_theory/criba.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/number_theory/divisores.cpp</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/number_theory/divisores.tex</filename>
    </added>
    <added>
      <filename>Mi manual de algoritmos/version_maraton_nacional_2008/src/number_theory/highlight.sh</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -22,7 +22,8 @@ ostream&amp; operator&lt;&lt; (ostream&amp; out, const point&amp; c)
 
 //P es un pol&#237;gono ordenado anticlockwise.
 //Si es clockwise, retorna el area negativa.
-//Si no esta ordenado retorna pura mierda
+//Si no esta ordenado retorna pura mierda.
+//P[0] != P[n-1]
 double area(const vector&lt;point&gt; &amp;p){
   double r = 0.0;
   for (int i=0; i&lt;p.size(); ++i){</diff>
      <filename>10065 - Useless tile packers/10065.2.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -1,80 +1,80 @@
-#include &lt;iostream&gt;
-#include &lt;vector&gt;
-#include &lt;stack&gt;
-#include &lt;string&gt;
-#include &lt;cassert&gt;
-using namespace std;
-
-#define D(x) cout &lt;&lt; #x &quot; es &quot; &lt;&lt; x &lt;&lt; endl
-
-int main(){
-    int n, C=1;
-    while (cin &gt;&gt; n &amp;&amp; n){
-        string line;
-        getline(cin, line);
-        int m = n/2;
-        string content[m];
-        int parent[m];
-        parent[0] = -10000;
-        vector&lt;int&gt; childs[m];
-        stack&lt;int&gt; stk;
-        for (int x = 0, i = 0; x &lt; n; ++x){
-            getline(cin, line);            
-            if (line == &quot;&lt;/n&gt;&quot;){
-               stk.pop();
-            }else{
-               string s = &quot;&quot;;
-               int j = line.find_first_of(&quot;'&quot;);
-               char delimiter = line[j];
-               while (assert(j &lt; line.size()), line[++j] != delimiter){
-                  s += line[j];
-               }
-               content[i] = s;
-               if (stk.size() &gt; 0){
-                  childs[stk.top()].push_back(i);
-                  parent[i] = stk.top();
-                  //D(parent[i]), D(content[i]);
-               }
-               stk.push(i);
-               ++i;
-            }
-        }
-        
-        int p = 0, q = 0; //p = nodo en donde estoy, q = id de p en la lista de sus hermanos
-        int I;
-        cout &lt;&lt; &quot;Case &quot; &lt;&lt; C++ &lt;&lt; &quot;:&quot; &lt;&lt; endl;
-        cin &gt;&gt; I;
-        while (I--){
-           string s;
-           cin &gt;&gt; s;
-           int x, y;
-           //D(s), D(p), D(q);
-           bool valid = true;
-           if (s == &quot;first_child&quot;){
-               if (childs[p].size() &lt;= 0) valid = false;
-               else{
-                   x = childs[p][0];
-                   y = 0;
-               }
-           }else if (s == &quot;next_sibling&quot;){
-                 y = q+1;
-                 if (parent[p] &lt; 0 || y &gt;= childs[parent[p]].size()) valid = false;
-                 else x = childs[parent[p]][y];
-           }else if (s == &quot;previous_sibling&quot;){
-                 y = q-1;
-                 if (parent[p] &lt; 0 || y &lt; 0 || y &gt;= childs[parent[p]].size()) valid = false;
-                 else x = childs[parent[p]][y];
-           }else if (s == &quot;parent&quot;){
-                 x = parent[p], y = 0;
-                 if (x &lt; 0) valid = false;
-           }
-           //D(valid);
-           if (valid){
-               cout &lt;&lt; content[x] &lt;&lt; endl;
-               p = x, q = y;
-           }
-           else cout &lt;&lt; content[p] &lt;&lt; endl;
-        }
-    }
-    return 0;
-}
+#include &lt;iostream&gt;
+#include &lt;vector&gt;
+#include &lt;stack&gt;
+#include &lt;string&gt;
+#include &lt;cassert&gt;
+using namespace std;
+
+#define D(x) cout &lt;&lt; #x &quot; es &quot; &lt;&lt; x &lt;&lt; endl
+
+int main(){
+    int n, C=1;
+    while (cin &gt;&gt; n &amp;&amp; n){
+        string line;
+        getline(cin, line);
+        int m = n/2;
+        string content[m];
+        int parent[m];
+        parent[0] = -10000;
+        vector&lt;int&gt; childs[m];
+        stack&lt;int&gt; stk;
+        for (int x = 0, i = 0; x &lt; n; ++x){
+            getline(cin, line);            
+            if (line == &quot;&lt;/n&gt;&quot;){
+	      stk.pop();
+            }else{
+               string s = &quot;&quot;;
+               int j = line.find_first_of(&quot;'&quot;);
+               char delimiter = line[j];
+               while (assert(j &lt; line.size()), line[++j] != delimiter){
+                  s += line[j];
+               }
+               content[i] = s;
+               if (stk.size() &gt; 0){
+                  childs[stk.top()].push_back(i);
+                  parent[i] = stk.top();
+                  //D(parent[i]), D(content[i]);
+               }
+               stk.push(i);
+               ++i;
+            }
+        }
+        
+        int p = 0, q = 0; //p = nodo en donde estoy, q = id de p en la lista de sus hermanos
+        int I;
+        cout &lt;&lt; &quot;Case &quot; &lt;&lt; C++ &lt;&lt; &quot;:&quot; &lt;&lt; endl;
+        cin &gt;&gt; I;
+        while (I--){
+           string s;
+           cin &gt;&gt; s;
+           int x, y;
+           //D(s), D(p), D(q);
+           bool valid = true;
+           if (s == &quot;first_child&quot;){
+               if (childs[p].size() &lt;= 0) valid = false;
+               else{
+                   x = childs[p][0];
+                   y = 0;
+               }
+           }else if (s == &quot;next_sibling&quot;){
+                 y = q+1;
+                 if (parent[p] &lt; 0 || y &gt;= childs[parent[p]].size()) valid = false;
+                 else x = childs[parent[p]][y];
+           }else if (s == &quot;previous_sibling&quot;){
+                 y = q-1;
+                 if (parent[p] &lt; 0 || y &lt; 0 || y &gt;= childs[parent[p]].size()) valid = false;
+                 else x = childs[parent[p]][y];
+           }else if (s == &quot;parent&quot;){
+                 x = parent[p], y = 0;
+                 if (x &lt; 0) valid = false;
+           }
+           //D(valid);
+           if (valid){
+               cout &lt;&lt; content[x] &lt;&lt; endl;
+               p = x, q = y;
+           }
+           else cout &lt;&lt; content[p] &lt;&lt; endl;
+        }
+    }
+    return 0;
+}</diff>
      <filename>11484 - Document Object Model/document.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -1,51 +1,78 @@
-6
-&lt;n value='parent'&gt;
-&lt;n value='child'&gt;
-&lt;/n&gt;
-&lt;n value='me'&gt;
-&lt;/n&gt;
-&lt;/n&gt;
-0
-
-10
-&lt;n value='a'&gt;
-&lt;n value='b'&gt;
-&lt;/n&gt;
-&lt;n value='c'&gt;
-&lt;/n&gt;
-&lt;n value='d'&gt;
-&lt;/n&gt;
-&lt;n value='e'&gt;
-&lt;/n&gt;
-&lt;/n&gt;
-19
-next_sibling
-previous_sibling
-first_child
-parent
-parent
-first_child
-next_sibling
-next_sibling
-next_sibling
-next_sibling
-next_sibling
-next_sibling
-next_sibling
-next_sibling
-next_sibling
-next_sibling
-first_child
-previous_sibling
-parent
-
-
-4
-&lt;n value='parent'&gt;
-&lt;n value='child'&gt;
-&lt;/n&gt;
-&lt;/n&gt;
-2
-next_sibling
-first_child
-0
\ No newline at end of file
+6
+&lt;n value='parent'&gt;
+&lt;n value='child'&gt;
+&lt;/n&gt;
+&lt;n value='me'&gt;
+&lt;/n&gt;
+&lt;/n&gt;
+8
+parent
+parent
+first_child
+next_sibling
+previous_sibling
+previous_sibling
+next_sibling
+first_child
+
+12
+&lt;n value='a'&gt;
+&lt;n value='b'&gt;
+&lt;/n&gt;
+&lt;n value='c'&gt;
+&lt;/n&gt;
+&lt;n value='d'&gt;
+&lt;/n&gt;
+&lt;n value='e'&gt;
+&lt;n value='f'&gt;
+&lt;/n&gt;
+&lt;/n&gt;
+&lt;/n&gt;
+32
+next_sibling
+previous_sibling
+first_child
+parent
+parent
+first_child
+next_sibling
+next_sibling
+next_sibling
+next_sibling
+next_sibling
+next_sibling
+next_sibling
+next_sibling
+next_sibling
+next_sibling
+first_child
+previous_sibling
+parent
+parent
+first_child
+next_sibling
+next_sibling
+next_sibling
+next_sibling
+next_sibling
+previous_sibling
+next_sibling
+first_child
+previous_sibling
+parent
+parent
+
+4
+&lt;n value='parent'&gt;
+&lt;n value='child'&gt;
+&lt;/n&gt;
+&lt;/n&gt;
+6
+next_sibling
+first_child
+first_child
+parent
+parent
+parent
+
+0</diff>
      <filename>11484 - Document Object Model/in.txt</filename>
    </modified>
    <modified>
      <diff>@@ -5,33 +5,60 @@
 \catcode`&lt;\active
 \catcode`&gt;\active
 \es@quoting
+\ifx\hyper@anchor\@undefined
+\global \let \oldcontentsline\contentsline
+\gdef \contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
+\global \let \oldnewlabel\newlabel
+\gdef \newlabel#1#2{\newlabelxx{#1}#2}
+\gdef \newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
+\AtEndDocument{\let \contentsline\oldcontentsline
+\let \newlabel\oldnewlabel}
+\else
+\global \let \hyper@last\relax 
+\fi
+
 \select@language{spanish}
 \@writefile{toc}{\select@language{spanish}}
 \@writefile{lof}{\select@language{spanish}}
 \@writefile{lot}{\select@language{spanish}}
-\@writefile{toc}{\contentsline {section}{\numberline {1}Teor\IeC {\'\i }a de n\IeC {\'u}meros}{1}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Big mod}{1}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Criba de Erat\IeC {\'o}stenes}{2}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.3}Divisores de un n\IeC {\'u}mero}{2}}
-\@writefile{toc}{\contentsline {section}{\numberline {2}Grafos}{2}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Algoritmo de Dijkstra}{2}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Minimum spanning tree: Algoritmo de Prim}{3}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Minimum spanning tree: Algoritmo de Kruskal + Union-Find}{5}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}Algoritmo de Floyd}{6}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {2.5}Puntos de articulaci\IeC {\'o}n}{7}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {2.6}M\IeC {\'a}ximo flujo: M\IeC {\'e}todo de Ford-Fulkerson, algoritmo de Edmonds-Karp}{8}}
-\@writefile{toc}{\contentsline {section}{\numberline {3}Programaci\IeC {\'o}n din\IeC {\'a}mica}{9}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Longest common subsequence}{9}}
-\@writefile{toc}{\contentsline {section}{\numberline {4}Geometr\IeC {\'\i }a}{9}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}\IeC {\'A}rea de un pol\IeC {\'\i }gono}{9}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Centro de masa de un pol\IeC {\'\i }gono}{10}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Convex hull: Graham Scan}{10}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Convex hull: Andrew's monotone chain}{12}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {4.5}M\IeC {\'\i }nima distancia entre un punto y un segmento}{13}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {4.6}M\IeC {\'\i }nima distancia entre un punto y una recta}{13}}
-\@writefile{toc}{\contentsline {section}{\numberline {5}Java}{14}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Entrada desde entrada est\IeC {\'a}ndar}{14}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Entrada desde archivo}{15}}
-\@writefile{toc}{\contentsline {section}{\numberline {6}C++}{15}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Entrada desde archivo}{15}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Strings con caract\IeC {\'e}res especiales}{16}}
+\@writefile{toc}{\contentsline {section}{\numberline {1}Teor\IeC {\'\i }a de n\IeC {\'u}meros}{2}{section.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Big mod}{2}{subsection.1.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Criba de Erat\IeC {\'o}stenes}{2}{subsection.1.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {1.3}Divisores de un n\IeC {\'u}mero}{3}{subsection.1.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {2}Combinatoria}{3}{section.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Cuadro resumen}{3}{subsection.2.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Combinaciones, coeficientes binomiales, tri\IeC {\'a}ngulo de Pascal}{3}{subsection.2.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Permutaciones con elementos indistinguibles}{4}{subsection.2.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}Desordenes, desarreglos o permutaciones completas}{4}{subsection.2.4}}
+\@writefile{toc}{\contentsline {section}{\numberline {3}Grafos}{4}{section.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Algoritmo de Dijkstra}{4}{subsection.3.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Minimum spanning tree: Algoritmo de Prim}{5}{subsection.3.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Minimum spanning tree: Algoritmo de Kruskal + Union-Find}{6}{subsection.3.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {3.4}Algoritmo de Floyd-Warshall}{7}{subsection.3.4}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {3.5}Algoritmo de Bellman-Ford}{8}{subsection.3.5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {3.6}Puntos de articulaci\IeC {\'o}n}{9}{subsection.3.6}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {3.7}M\IeC {\'a}ximo flujo: M\IeC {\'e}todo de Ford-Fulkerson, algoritmo de Edmonds-Karp}{10}{subsection.3.7}}
+\@writefile{toc}{\contentsline {section}{\numberline {4}Programaci\IeC {\'o}n din\IeC {\'a}mica}{11}{section.4}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Longest common subsequence}{11}{subsection.4.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Partici\IeC {\'o}n de troncos}{12}{subsection.4.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {5}Geometr\IeC {\'\i }a}{13}{section.5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}\IeC {\'A}rea de un pol\IeC {\'\i }gono}{13}{subsection.5.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Centro de masa de un pol\IeC {\'\i }gono}{14}{subsection.5.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Convex hull: Graham Scan}{14}{subsection.5.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Convex hull: Andrew's monotone chain}{16}{subsection.5.4}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.5}M\IeC {\'\i }nima distancia entre un punto y un segmento}{17}{subsection.5.5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.6}M\IeC {\'\i }nima distancia entre un punto y una recta}{17}{subsection.5.6}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.7}Determinar si un pol\IeC {\'\i }gono es convexo}{17}{subsection.5.7}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.8}Determinar si un punto est\IeC {\'a} dentro de un pol\IeC {\'\i }gono convexo}{18}{subsection.5.8}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.9}Determinar si un punto est\IeC {\'a} dentro de un pol\IeC {\'\i }gono cualquiera}{18}{subsection.5.9}}
+\@writefile{toc}{\contentsline {section}{\numberline {6}Miscel\IeC {\'a}neo}{20}{section.6}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}El \textit  {parser} m\IeC {\'a}s r\IeC {\'a}pido del mundo}{20}{subsection.6.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {7}Java}{21}{section.7}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.1}Entrada desde entrada est\IeC {\'a}ndar}{21}{subsection.7.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.2}Entrada desde archivo}{22}{subsection.7.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.3}Mapas y sets}{23}{subsection.7.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.4}Colas de prioridad}{24}{subsection.7.4}}
+\newlabel{colas_de_prioridad_java}{{7.4}{24}{Colas de prioridad\relax }{subsection.7.4}{}}
+\@writefile{toc}{\contentsline {section}{\numberline {8}C++}{25}{section.8}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.1}Entrada desde archivo}{25}{subsection.8.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.2}Strings con caract\IeC {\'e}res especiales}{26}{subsection.8.2}}</diff>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/manual.aux</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/manual.dvi</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6) (format=pdflatex 2008.2.17)  14 SEP 2008 20:50
+This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6) (format=pdflatex 2008.2.17)  20 SEP 2008 00:15
 entering extended mode
  %&amp;-line parsing enabled.
 **manual.tex
@@ -363,25 +363,101 @@ LaTeX Font Info:    Redeclaring font encoding OMS on input line 568.
 \mathdisplay@stack=\toks23
 LaTeX Info: Redefining \[ on input line 2666.
 LaTeX Info: Redefining \] on input line 2667.
+)
+(/usr/share/texmf-texlive/tex/latex/tools/verbatim.sty
+Package: verbatim 2003/08/22 v1.5q LaTeX2e package for verbatim enhancements
+\every@verbatim=\toks24
+\verbatim@line=\toks25
+\verbatim@in@stream=\read1
+)
+(/usr/share/texmf-texlive/tex/latex/hyperref/hyperref.sty
+Package: hyperref 2007/02/07 v6.75r Hypertext links for LaTeX
+\@linkdim=\dimen117
+\Hy@linkcounter=\count111
+\Hy@pagecounter=\count112
+
+(/usr/share/texmf-texlive/tex/latex/hyperref/pd1enc.def
+File: pd1enc.def 2007/02/07 v6.75r Hyperref: PDFDocEncoding definition (HO)
+Now handling font encoding PD1 ...
+... no UTF-8 mapping file for font encoding PD1
+)
+(/etc/texmf/tex/latex/config/hyperref.cfg
+File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
+)
+(/usr/share/texmf-texlive/tex/latex/oberdiek/kvoptions.sty
+Package: kvoptions 2006/08/22 v2.4 Connects package keyval with LaTeX options (
+HO)
+)
+Package hyperref Info: Hyper figures OFF on input line 2288.
+Package hyperref Info: Link nesting OFF on input line 2293.
+Package hyperref Info: Hyper index ON on input line 2296.
+Package hyperref Info: Plain pages OFF on input line 2303.
+Package hyperref Info: Backreferencing OFF on input line 2308.
+
+Implicit mode ON; LaTeX internals redefined
+Package hyperref Info: Bookmarks ON on input line 2444.
+(/usr/share/texmf-texlive/tex/latex/ltxmisc/url.sty
+\Urlmuskip=\muskip11
+Package: url 2005/06/27  ver 3.2  Verb mode for urls, etc.
+)
+LaTeX Info: Redefining \url on input line 2599.
+\Fld@menulength=\count113
+\Field@Width=\dimen118
+\Fld@charsize=\dimen119
+\Choice@toks=\toks26
+\Field@toks=\toks27
+Package hyperref Info: Hyper figures OFF on input line 3102.
+Package hyperref Info: Link nesting OFF on input line 3107.
+Package hyperref Info: Hyper index ON on input line 3110.
+Package hyperref Info: backreferencing OFF on input line 3117.
+Package hyperref Info: Link coloring OFF on input line 3122.
+\Hy@abspage=\count114
+\c@Item=\count115
+\c@Hfootnote=\count116
+)
+*hyperref using default driver hpdftex*
+(/usr/share/texmf-texlive/tex/latex/hyperref/hpdftex.def
+File: hpdftex.def 2007/02/07 v6.75r Hyperref driver for pdfTeX
+\Fld@listcount=\count117
 ) (./manual.aux)
 \openout1 = `manual.aux'.
 
-LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 18.
-LaTeX Font Info:    ... okay on input line 18.
-LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 18.
-LaTeX Font Info:    ... okay on input line 18.
-LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 18.
-LaTeX Font Info:    ... okay on input line 18.
-LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 18.
-LaTeX Font Info:    ... okay on input line 18.
-LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 18.
-LaTeX Font Info:    ... okay on input line 18.
-LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 18.
-LaTeX Font Info:    ... okay on input line 18.
-
-(./manual.toc)
-\tf@toc=\write3
-\openout3 = `manual.toc'.
+LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 20.
+LaTeX Font Info:    ... okay on input line 20.
+LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 20.
+LaTeX Font Info:    ... okay on input line 20.
+LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 20.
+LaTeX Font Info:    ... okay on input line 20.
+LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 20.
+LaTeX Font Info:    ... okay on input line 20.
+LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 20.
+LaTeX Font Info:    ... okay on input line 20.
+LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 20.
+LaTeX Font Info:    ... okay on input line 20.
+LaTeX Font Info:    Checking defaults for PD1/pdf/m/n on input line 20.
+LaTeX Font Info:    ... okay on input line 20.
+Package hyperref Info: Link coloring OFF on input line 20.
+
+(/usr/share/texmf-texlive/tex/latex/hyperref/nameref.sty
+Package: nameref 2006/12/27 v2.28 Cross-referencing by name of section
+
+(/usr/share/texmf-texlive/tex/latex/oberdiek/refcount.sty
+Package: refcount 2006/02/20 v3.0 Data extraction from references (HO)
+)
+\c@section@level=\count118
+)
+LaTeX Info: Redefining \ref on input line 20.
+LaTeX Info: Redefining \pageref on input line 20.
+ (./manual.out)
+(./manual.out)
+\@outlinefile=\write3
+\openout3 = `manual.out'.
+
+ (./manual.toc [1
+
+{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}])
+\tf@toc=\write4
+\openout4 = `manual.toc'.
 
  (/usr/share/texmf-texlive/tex/latex/listings/lstlang1.sty
 File: lstlang1.sty 2004/09/05 1.3 listings language file
@@ -397,36 +473,72 @@ LaTeX Font Warning: Font shape `OMS/cmtt/m/n' undefined
 (Font)              using `OMS/cmsy/m/n' instead
 (Font)              for symbol `textbraceleft' on input line 8.
 
-) [1
+) (./src/number_theory/criba.tex [2]) (./src/number_theory/divisores.tex)
 
-{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}]
-(./src/number_theory/criba.tex) (./src/number_theory/divisores.tex)
-(./src/grafos/dijkstra.tex [2]
+Package amsmath Warning: Foreign command \atopwithdelims;
+(amsmath)                \frac or \genfrac should be used instead
+(amsmath)                 on input line 101.
+
+(./src/combinatoria/pascal_triangle.tex) [3] (./src/grafos/dijkstra.tex
 LaTeX Font Info:    Font shape `OT1/cmtt/bx/n' in size &lt;7&gt; not available
 (Font)              Font shape `OT1/cmtt/m/n' tried instead on input line 30.
 LaTeX Font Info:    Font shape `OT1/cmtt/bx/n' in size &lt;5&gt; not available
 (Font)              Font shape `OT1/cmtt/m/n' tried instead on input line 30.
-) (./src/grafos/prim.tex [3] [4])
-(./src/grafos/kruskal.tex [5]
+
+[4]) (./src/grafos/prim.tex [5]) (./src/grafos/kruskal.tex [6]
 
 LaTeX Font Warning: Font shape `OMS/cmtt/m/it' undefined
 (Font)              using `OMS/cmtt/m/n' instead
-(Font)              for symbol `textbackslash' on input line 55.
+(Font)              for symbol `textbackslash' on input line 54.
+
+) (./src/grafos/floyd.tex [7]) (./src/grafos/bellman.tex [8])
+(./src/grafos/puntos_articulacion.tex [9]) (./src/grafos/ford_fulkerson.tex
+[10]) (./src/dp/lcs.tex) [11] (./src/dp/particion_troncos.tex [12])
+(./src/geometria/polygon_area.tex [13]) (./src/geometria/grahamscan.tex
+[14] [15]) (./src/geometria/monotonechain.tex [16])
+(./src/geometria/distance_point_to_segment.tex)
+(./src/geometria/distance_point_to_line.tex)
+(./src/geometria/is_convex_polygon.tex [17])
+(./src/geometria/is_inside_convex_polygon.tex)
+(./src/geometria/is_inside_concave_polygon.tex [18]
+LaTeX Font Info:    Font shape `OT1/cmtt/bx/n' in size &lt;12&gt; not available
+(Font)              Font shape `OT1/cmtt/m/n' tried instead on input line 12.
+ [19])
+(./src/misc/parser_recursivo_desc.tex [20]) (./src/java/io_estandar_easy.tex)
+(./src/java/io_estandar.tex [21]) (./src/java/io_file.tex [22])
+(./src/java/maps_sets.tex [23])
+Underfull \hbox (badness 10000) in paragraph at lines 316--316
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 316--316
+
+ []
+
+(./src/java/priority_queue.tex [24])
+Underfull \hbox (badness 10000) in paragraph at lines 341--341
+
+ []
 
-) (./src/grafos/floyd.tex [6]) (./src/grafos/puntos_articulacion.tex [7])
-(./src/grafos/ford_fulkerson.tex [8]) (./src/dp/lcs.tex) [9]
-(./src/geometria/grahamscan.tex [10] [11]) (./src/geometria/monotonechain.tex
-[12]) (./src/geometria/distance_point_to_segment.tex)
-(./src/geometria/distance_point_to_line.tex [13])
-(./src/java/io_estandar_easy.tex) (./src/java/io_estandar.tex [14])
-(./src/java/io_file.tex) (./src/c++/io_file.tex [15]) (./src/c++/unicode.tex)
-(./src/c++/fgetws.tex [16]) [17] (./manual.aux)
+(./src/c++/io_file.tex [25]) (./src/c++/unicode.tex) (./src/c++/fgetws.tex
+[26]) [27] (./manual.aux)
 
 LaTeX Font Warning: Some font shapes were not available, defaults substituted.
 
  )
-(\end occurred inside a group at level 20)
+(\end occurred inside a group at level 30)
 
+### simple group (level 30) entered at line 3 ({)
+### simple group (level 29) entered at line 3 ({)
+### simple group (level 28) entered at line 3 ({)
+### simple group (level 27) entered at line 3 ({)
+### simple group (level 26) entered at line 3 ({)
+### simple group (level 25) entered at line 3 ({)
+### simple group (level 24) entered at line 3 ({)
+### simple group (level 23) entered at line 3 ({)
+### simple group (level 22) entered at line 3 ({)
+### simple group (level 21) entered at line 3 ({)
 ### simple group (level 20) entered at line 3 ({)
 ### simple group (level 19) entered at line 3 ({)
 ### simple group (level 18) entered at line 3 ({)
@@ -449,26 +561,32 @@ LaTeX Font Warning: Some font shapes were not available, defaults substituted.
 ### simple group (level 1) entered at line 3 ({)
 ### bottom level 
 Here is how much of TeX's memory you used:
- 3460 strings out of 95001
- 44570 string characters out of 1181560
- 106384 words of memory out of 1500000
- 6570 multiletter control sequences out of 10000+50000
- 6630 words of font info for 26 fonts, out of 1200000 for 2000
+ 5496 strings out of 95001
+ 74605 string characters out of 1181560
+ 141213 words of memory out of 1500000
+ 8457 multiletter control sequences out of 10000+50000
+ 11689 words of font info for 44 fonts, out of 1200000 for 2000
  80 hyphenation exceptions out of 8191
- 27i,6n,32p,933b,1339s stack positions out of 5000i,500n,6000p,200000b,5000s
+ 27i,8n,36p,933b,2422s stack positions out of 5000i,500n,6000p,200000b,5000s
 &lt;/usr/share/texmf-texlive/fonts/type1/bluesky/cm/cmbx10.pfb&gt;&lt;/u
 sr/share/texmf-texlive/fonts/type1/bluesky/cm/cmbx12.pfb&gt;&lt;/usr/share/texmf-texl
-ive/fonts/type1/bluesky/cm/cmex10.pfb&gt;&lt;/usr/share/texmf-texlive/fonts/type1/blu
-esky/cm/cmitt10.pfb&gt;&lt;/usr/share/texmf-texlive/fonts/type1/bluesky/cm/cmmi10.pfb
-&gt;&lt;/usr/share/texmf-texlive/fonts/type1/bluesky/cm/cmmi7.pfb&gt;&lt;/usr/share/texmf-t
-exlive/fonts/type1/bluesky/cm/cmr10.pfb&gt;&lt;/usr/share/texmf-texlive/fonts/type1/b
-luesky/cm/cmr7.pfb&gt;&lt;/usr/share/texmf-texlive/fonts/type1/bluesky/cm/cmsy10.pfb&gt;
-&lt;/usr/share/texmf-texlive/fonts/type1/bluesky/cm/cmsy7.pfb&gt;&lt;/usr/share/texmf-te
-xlive/fonts/type1/bluesky/cm/cmti10.pfb&gt;&lt;/usr/share/texmf-texlive/fonts/type1/b
-luesky/cm/cmtt10.pfb&gt;
-Output written on manual.pdf (17 pages, 125809 bytes).
+ive/fonts/type1/bluesky/cm/cmbx9.pfb&gt;&lt;/usr/share/texmf-texlive/fonts/type1/blue
+sky/cm/cmbxti10.pfb&gt;&lt;/usr/share/texmf-texlive/fonts/type1/bluesky/cm/cmex10.pfb
+&gt;&lt;/usr/share/texmf-texlive/fonts/type1/bluesky/cm/cmitt10.pfb&gt;&lt;/usr/share/texmf
+-texlive/fonts/type1/bluesky/cm/cmmi10.pfb&gt;&lt;/usr/share/texmf-texlive/fonts/type
+1/bluesky/cm/cmmi12.pfb&gt;&lt;/usr/share/texmf-texlive/fonts/type1/bluesky/cm/cmmi7.
+pfb&gt;&lt;/usr/share/texmf-texlive/fonts/type1/bluesky/cm/cmr10.pfb&gt;&lt;/usr/share/texm
+f-texlive/fonts/type1/bluesky/cm/cmr12.pfb&gt;&lt;/usr/share/texmf-texlive/fonts/type
+1/bluesky/cm/cmr17.pfb&gt;&lt;/usr/share/texmf-texlive/fonts/type1/bluesky/cm/cmr7.pf
+b&gt;&lt;/usr/share/texmf-texlive/fonts/type1/bluesky/cm/cmr9.pfb&gt;&lt;/usr/share/texmf-t
+exlive/fonts/type1/bluesky/cm/cmsy10.pfb&gt;&lt;/usr/share/texmf-texlive/fonts/type1/
+bluesky/cm/cmsy7.pfb&gt;&lt;/usr/share/texmf-texlive/fonts/type1/bluesky/cm/cmti10.pf
+b&gt;&lt;/usr/share/texmf-texlive/fonts/type1/bluesky/cm/cmti9.pfb&gt;&lt;/usr/share/texmf-
+texlive/fonts/type1/bluesky/cm/cmtt10.pfb&gt;&lt;/usr/share/texmf-texlive/fonts/type1
+/bluesky/cm/cmtt12.pfb&gt;
+Output written on manual.pdf (27 pages, 231829 bytes).
 PDF statistics:
- 105 PDF objects out of 1000 (max. 8388607)
- 0 named destinations out of 1000 (max. 131072)
- 1 words of extra memory for PDF output out of 10000 (max. 10000000)
+ 421 PDF objects out of 1000 (max. 8388607)
+ 69 named destinations out of 1000 (max. 131072)
+ 337 words of extra memory for PDF output out of 10000 (max. 10000000)
 </diff>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/manual.log</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/manual.pdf</filename>
    </modified>
    <modified>
      <diff>@@ -6,6 +6,8 @@
 \usepackage{listings}
 \usepackage[usenames,dvipsnames]{color}
 \usepackage{amsmath}
+\usepackage{verbatim}
+\usepackage{hyperref}
 %\usepackage{color}
 %---------------------------------------------------------------
 
@@ -21,7 +23,7 @@
 \title{Resumen de algoritmos para torneos de programaci&#243;n}
 \author{Andr&#233;s Mej&#237;a}
 \date{\today}
-%\maketitle
+\maketitle
 %---------------------------------------------------------------
 
 %---------------------------------------------------------------
@@ -33,20 +35,27 @@
 \section{Teor&#237;a de n&#250;meros}
 %---------------------------------------------------------------
 \subsection{Big mod}
-
 \input{./src/number_theory/bigmod}%.tex
 
 \subsection{Criba de Erat&#243;stenes}
+\small
+\textbf{Field-testing:} 
+\begin{itemize}
+\item \emph{SPOJ} -  2912 - Super Primes
+\item \emph{Live Archive} - 3639 - Prime Path
+\end{itemize}
+
+\normalsize
 Marca los n&#250;meros primos en un arreglo. Algunos tiempos de ejecuci&#243;n:
 \begin{center}
 \begin{tabular}{c c}
 \hline\hline
 SIZE &amp; Tiempo (s) \\ [0.5ex]
 \hline
-100000 &amp; 0.004 \\
-1000000 &amp; 0.078 \\
-10000000 &amp; 1.550 \\
-100000000 &amp; 14.319 \\ [1ex]
+100000 &amp; 0.003 \\
+1000000 &amp; 0.060 \\
+10000000 &amp; 0.620 \\
+100000000 &amp; 7.650 \\ [1ex]
 \hline
 \end{tabular}
 \end{center}
@@ -63,6 +72,74 @@ responder muy lento.
 
 \input{./src/number_theory/divisores}%.tex
 
+\section{Combinatoria}
+\subsection{Cuadro resumen}
+F&#243;rmulas para combinaciones y permutaciones:
+\begin{center}
+\renewcommand{\arraystretch}{2} %Multiplica la altura de cada fila de la tabla por 2
+%Si quiero aumentar el tama&#241;o de una fila en particular insertar \rule{0cm}{1cm} en esa fila.
+\begin{tabular}{| c | c | c |}
+\hline
+\textit{Tipo} &amp; \textit{&#191;Se permite la repetici&#243;n?} &amp; \textit{F&#243;rmula} \\ [1.5ex]
+\hline\hline
+
+$r$-permutaciones &amp; No &amp; $ \displaystyle\frac{n!}{(n-r)!} $ \\ [1.5ex]
+\hline
+$r$-combinaciones &amp; No &amp; $ \displaystyle\frac{n!}{r!(n-r)!} $ \\  [1.5ex]
+\hline
+$r$-permutaciones &amp; S&#237; &amp; $ \displaystyle n^{r} $ \\
+\hline
+$r$-combinaciones &amp; S&#237; &amp; $ \displaystyle\frac{(n+r-1)!}{r!(n-1)!} $ \\ [1.5ex]
+\hline
+\end{tabular}
+\renewcommand{\arraystretch}{1}
+\end{center}
+Tomado de \textit{Matem&#225;tica discreta y sus aplicaciones}, Kenneth Rosen, 5${}^{\hbox{ta}}$ edici&#243;n, McGraw-Hill, p&#225;gina 315.
+
+\subsection{Combinaciones, coeficientes binomiales, tri&#225;ngulo de Pascal}
+\emph{Complejidad:} $ O(n^2) $ \\
+$$ {n \choose k} = \left\{
+\begin{array}{c l}
+ 1 &amp; k = 0\\
+ 1 &amp; n = k\\
+ \displaystyle {n - 1 \choose k - 1} + {n - 1 \choose k} &amp; \mbox{en otro caso}\\
+\end{array}
+\right.
+$$
+
+\input{./src/combinatoria/pascal_triangle}%.tex
+
+\bigskip 
+\textbf{Nota:} $ \displaystyle {n \choose k }  $ est&#225; indefinido en el c&#243;digo anterior si $ n &gt; k$. &#161;La tabla puede estar llena con cualquier basura del compilador!
+
+\subsection{Permutaciones con elementos indistinguibles}
+El n&#250;mero de permutaciones \underline{diferentes} de $n$ objetos, donde hay $n_{1}$ objetos indistinguibles de tipo 1,
+$n_{2}$ objetos indistinguibles de tipo 2, ..., y $n_{k}$ objetos indistinguibles de tipo $k$, es
+$$
+\frac{n!}{n_{1}!n_{2}! \cdots n_{k}!}
+$$
+\textbf{Ejemplo:} Con las letras de la palabra \texttt{PROGRAMAR} se pueden formar $ \displaystyle \frac{9!}{2! \cdot 3!} = 
+30240 $ permutaciones \underline{diferentes}.
+\subsection{Desordenes, desarreglos o permutaciones completas}
+
+Un desarreglo es una permutaci&#243;n donde ning&#250;n elemento $i$ est&#225; en la
+posici&#243;n $i$-&#233;sima. Por ejemplo, \textit{4213} es un desarreglo de 4 elementos pero
+\textit{3241} no lo es porque el 2 aparece en la posici&#243;n 2.
+
+Sea $D_{n}$ el n&#250;mero de desarreglos de $n$ elementos, entonces:
+$$ {D_{n}} = \left\{
+\begin{array}{c l}
+ 1 &amp; n = 0\\
+ 0 &amp; n = 1\\
+ (n-1)(D_{n-1} + D_{n-2}) &amp; n \geq 2\\
+\end{array}
+\right.
+$$
+Usando el principio de inclusi&#243;n-exclusi&#243;n, tambi&#233;n se puede encontrar la f&#243;rmula
+$$
+D_{n} = n!\left [ 1 - \frac{1}{1!} + \frac{1}{2!} - \frac{1}{3!} + \cdots + (-1)^{n}\frac{1}{n!} \right ]
+= n! \sum_{i=0}^{n} \frac{(-1)^{i}}{i!}
+$$
 
 \section{Grafos}
 \subsection{Algoritmo de Dijkstra}
@@ -77,9 +154,17 @@ El peso de todas las aristas debe ser no negativo.
 \subsection{Minimum spanning tree: Algoritmo de Kruskal + Union-Find}
 \input{./src/grafos/kruskal}%.tex
 
-\subsection{Algoritmo de Floyd}
+\subsection{Algoritmo de Floyd-Warshall}
+\emph{Complejidad:} $ O(n^3) $ \\
+Se asume que no hay ciclos de costo negativo.
 \input{./src/grafos/floyd}%.tex
 
+\subsection{Algoritmo de Bellman-Ford}
+Si no hay ciclos de coste negativo, encuentra la distancia m&#225;s corta entre un nodo
+y todos los dem&#225;s. Si s&#237; hay, permite saberlo. \\
+El coste de las aristas \underline{s&#237;} puede ser negativo.
+\input{./src/grafos/bellman}%.tex
+
 \subsection{Puntos de articulaci&#243;n}
 \input{./src/grafos/puntos_articulacion}%.tex
 
@@ -93,11 +178,37 @@ es utilizar BFS que lo hace m&#225;s eficiente en algunos grafos.
 \subsection{Longest common subsequence}
 \input{./src/dp/lcs}%.tex
 
+\subsection{Partici&#243;n de troncos}
+Este problema es similar al problema de \textit{Matrix Chain Multiplication}. Se tiene
+un tronco de longitud $n$, y $m$ puntos de corte en el tronco. Se puede hacer un corte a la vez,
+cuyo costo es igual a la longitud del tronco. &#191;Cu&#225;l es el m&#237;nimo costo para partir todo el tronco
+en pedacitos individuales?
+\\
+\medskip
+\textbf{Ejemplo:} Se tiene un tronco de longitud 10. Los puntos de corte son 2, 4, y 7. El m&#237;nimo
+costo para partirlo es 20, y se obtiene as&#237;:
+\begin{itemize}
+\item Partir el tronco (0, 10) por 4. Vale 10 y quedan los troncos (0, 4) y (4, 10).
+\item Partir el tronco (0, 4) por 2. Vale 4 y quedan los troncos (0, 2), (2, 4) y (4, 10).
+\item No hay que partir el tronco (0, 2).
+\item No hay que partir el tronco (2, 4).
+\item Partir el tronco (4, 10) por 7. Vale 6 y quedan los troncos (4, 7) y (7, 10).
+\item No hay que partir el tronco (4, 7).
+\item No hay que partir el tronco (7, 10).
+\item El costo total es $10+4+6 = 20$.
+\end{itemize}
+
+\medskip
+El algoritmo es $O(n^3)$, pero optimizable a $O(n^2)$ con una tabla adicional:
+\input{./src/dp/particion_troncos}%.tex
+
 \section{Geometr&#237;a}
 \subsection{&#193;rea de un pol&#237;gono}
 Si P es un pol&#237;gono simple (no se intersecta a s&#237; mismo) su &#225;rea est&#225; dada por: \\
 
 $ A(P) = \frac{1}{2} \displaystyle\sum_{i=0}^{n-1} (x_{i} \cdot y_{i+1} - x_{i+1} \cdot y_{i}) $ \\
+\bigskip
+\input{./src/geometria/polygon_area}%.tex
 
 \subsection{Centro de masa de un pol&#237;gono}
 Si P es un pol&#237;gono simple (no se intersecta a s&#237; mismo) su centro de masa est&#225; dado por: \\
@@ -134,7 +245,40 @@ $ \displaystyle\bar{C}_{y} = \frac{1}{6A} \sum_{i=0}^{n-1} (y_{i} + y_{i+1}) (x_
 
 \subsection{M&#237;nima distancia entre un punto y una recta}
 \input{./src/geometria/distance_point_to_line}%.tex
+
+\subsection{Determinar si un pol&#237;gono es convexo}
+\input{./src/geometria/is_convex_polygon}%.tex
+
+\subsection{Determinar si un punto est&#225; dentro de un pol&#237;gono convexo}
+\input{./src/geometria/is_inside_convex_polygon}%.tex
+
+\subsection{Determinar si un punto est&#225; dentro de un pol&#237;gono cualquiera}
+\large{\textbf{ADVERTENCIA:}} C&#243;digo no probado.
+\input{./src/geometria/is_inside_concave_polygon}%.tex
+
 %---------------------------------------------------------------
+\section{Miscel&#225;neo}
+\subsection{El \textit{parser} m&#225;s r&#225;pido del mundo}
+\begin{itemize}
+\item Cada no-terminal: un m&#233;todo
+\item Cada lado derecho: invocar los m&#233;todos de los no-terminales o
+\item Cada terminal: invocar proceso \textit{match}
+\item Alternativas en una producci&#243;n: se hace un \textit{if}
+\end{itemize}
+\medskip
+No funciona con gram&#225;ticas recursivas por izquierda &#243; en las que en alg&#250;n momento haya
+varias posibles escogencias que empiezan por el mismo caracter (En ambos casos la gram&#225;tica se puede factorizar).
+
+\medskip
+\textbf{Ejemplo:} Para la gram&#225;tica:
+$$
+A \longrightarrow (A)A 
+$$ $$
+A \longrightarrow \epsilon
+$$
+
+\input{./src/misc/parser_recursivo_desc}%.tex
+
 
 \section{Java}
 \subsection{Entrada desde entrada est&#225;ndar}
@@ -148,6 +292,59 @@ Este segundo es m&#225;s r&#225;pido: \\
 \subsection{Entrada desde archivo}
 \input{./src/java/io_file}%.tex
 
+\subsection{Mapas y sets}
+Programa de ejemplo:
+\input{./src/java/maps_sets}%.tex
+\bigskip
+La salida de este programa es: \\
+
+\ttfamily 
+\fbox{\parbox{2.0in}{
+Maps\\
+m.size() = 1\\
+465\\
+null\\
+\\
+Sets\\
+54 presente.\\
+s.size() = 3\\
+54\\
+3576\\
+1000000007\\
+s.size() = 0\\
+}
+}
+\\ \normalfont\normalsize
+\bigskip 
+Si quiere usarse una clase propia como llave del mapa o como elemento del set, la clase debe implementar
+algunos m&#233;todos especiales: Si va a usarse un TreeMap &#243; TreeSet hay que implementar los m&#233;todos \texttt{compareTo} y 
+\texttt{equals} de la interfaz \texttt{Comparable} como en la secci&#243;n \ref{colas_de_prioridad_java}. Si va a usarse
+un HashMap &#243; HashSet hay m&#225;s complicaciones.\\
+\smallskip
+\textbf{Sugerencia:} Inventar una manera de codificar y decodificar la clase en una String o un Integer y meter esa representaci&#243;n en el mapa o set: esas clases ya tienen los m&#233;todos implementados.
+
+\subsection{Colas de prioridad}
+\label{colas_de_prioridad_java}
+Hay que implementar unos m&#233;todos. Veamos un ejemplo: \\
+\input{./src/java/priority_queue}%.tex
+\bigskip
+La salida de este programa es: \\
+
+\ttfamily 
+\fbox{\parbox{2.0in}{
+peso = 0, destino = 12\\
+peso = 0, destino = 8\\
+peso = 0, destino = 13\\
+peso = 3, destino = 7\\
+peso = 1876, destino = 4\\
+}
+}
+\\ \normalfont\normalsize
+\medskip
+Vemos que la funci&#243;n de comparaci&#243;n que definimos no tiene en cuenta \texttt{destino},
+por eso no desempata cuando dos \texttt{Items} tienen el mismo \texttt{peso} si no que escoge
+cualquiera de manera arbitraria.
+
 \section{C++}
 \subsection{Entrada desde archivo}
 \input{./src/c++/io_file}%.tex</diff>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/manual.tex</filename>
    </modified>
    <modified>
      <diff>@@ -1,27 +1,41 @@
 \select@language {spanish}
-\contentsline {section}{\numberline {1}Teor\IeC {\'\i }a de n\IeC {\'u}meros}{1}
-\contentsline {subsection}{\numberline {1.1}Big mod}{1}
-\contentsline {subsection}{\numberline {1.2}Criba de Erat\IeC {\'o}stenes}{2}
-\contentsline {subsection}{\numberline {1.3}Divisores de un n\IeC {\'u}mero}{2}
-\contentsline {section}{\numberline {2}Grafos}{2}
-\contentsline {subsection}{\numberline {2.1}Algoritmo de Dijkstra}{2}
-\contentsline {subsection}{\numberline {2.2}Minimum spanning tree: Algoritmo de Prim}{3}
-\contentsline {subsection}{\numberline {2.3}Minimum spanning tree: Algoritmo de Kruskal + Union-Find}{5}
-\contentsline {subsection}{\numberline {2.4}Algoritmo de Floyd}{6}
-\contentsline {subsection}{\numberline {2.5}Puntos de articulaci\IeC {\'o}n}{7}
-\contentsline {subsection}{\numberline {2.6}M\IeC {\'a}ximo flujo: M\IeC {\'e}todo de Ford-Fulkerson, algoritmo de Edmonds-Karp}{8}
-\contentsline {section}{\numberline {3}Programaci\IeC {\'o}n din\IeC {\'a}mica}{9}
-\contentsline {subsection}{\numberline {3.1}Longest common subsequence}{9}
-\contentsline {section}{\numberline {4}Geometr\IeC {\'\i }a}{9}
-\contentsline {subsection}{\numberline {4.1}\IeC {\'A}rea de un pol\IeC {\'\i }gono}{9}
-\contentsline {subsection}{\numberline {4.2}Centro de masa de un pol\IeC {\'\i }gono}{10}
-\contentsline {subsection}{\numberline {4.3}Convex hull: Graham Scan}{10}
-\contentsline {subsection}{\numberline {4.4}Convex hull: Andrew's monotone chain}{12}
-\contentsline {subsection}{\numberline {4.5}M\IeC {\'\i }nima distancia entre un punto y un segmento}{13}
-\contentsline {subsection}{\numberline {4.6}M\IeC {\'\i }nima distancia entre un punto y una recta}{13}
-\contentsline {section}{\numberline {5}Java}{14}
-\contentsline {subsection}{\numberline {5.1}Entrada desde entrada est\IeC {\'a}ndar}{14}
-\contentsline {subsection}{\numberline {5.2}Entrada desde archivo}{15}
-\contentsline {section}{\numberline {6}C++}{15}
-\contentsline {subsection}{\numberline {6.1}Entrada desde archivo}{15}
-\contentsline {subsection}{\numberline {6.2}Strings con caract\IeC {\'e}res especiales}{16}
+\contentsline {section}{\numberline {1}Teor\IeC {\'\i }a de n\IeC {\'u}meros}{2}{section.1}
+\contentsline {subsection}{\numberline {1.1}Big mod}{2}{subsection.1.1}
+\contentsline {subsection}{\numberline {1.2}Criba de Erat\IeC {\'o}stenes}{2}{subsection.1.2}
+\contentsline {subsection}{\numberline {1.3}Divisores de un n\IeC {\'u}mero}{3}{subsection.1.3}
+\contentsline {section}{\numberline {2}Combinatoria}{3}{section.2}
+\contentsline {subsection}{\numberline {2.1}Cuadro resumen}{3}{subsection.2.1}
+\contentsline {subsection}{\numberline {2.2}Combinaciones, coeficientes binomiales, tri\IeC {\'a}ngulo de Pascal}{3}{subsection.2.2}
+\contentsline {subsection}{\numberline {2.3}Permutaciones con elementos indistinguibles}{4}{subsection.2.3}
+\contentsline {subsection}{\numberline {2.4}Desordenes, desarreglos o permutaciones completas}{4}{subsection.2.4}
+\contentsline {section}{\numberline {3}Grafos}{4}{section.3}
+\contentsline {subsection}{\numberline {3.1}Algoritmo de Dijkstra}{4}{subsection.3.1}
+\contentsline {subsection}{\numberline {3.2}Minimum spanning tree: Algoritmo de Prim}{5}{subsection.3.2}
+\contentsline {subsection}{\numberline {3.3}Minimum spanning tree: Algoritmo de Kruskal + Union-Find}{6}{subsection.3.3}
+\contentsline {subsection}{\numberline {3.4}Algoritmo de Floyd-Warshall}{7}{subsection.3.4}
+\contentsline {subsection}{\numberline {3.5}Algoritmo de Bellman-Ford}{8}{subsection.3.5}
+\contentsline {subsection}{\numberline {3.6}Puntos de articulaci\IeC {\'o}n}{9}{subsection.3.6}
+\contentsline {subsection}{\numberline {3.7}M\IeC {\'a}ximo flujo: M\IeC {\'e}todo de Ford-Fulkerson, algoritmo de Edmonds-Karp}{10}{subsection.3.7}
+\contentsline {section}{\numberline {4}Programaci\IeC {\'o}n din\IeC {\'a}mica}{11}{section.4}
+\contentsline {subsection}{\numberline {4.1}Longest common subsequence}{11}{subsection.4.1}
+\contentsline {subsection}{\numberline {4.2}Partici\IeC {\'o}n de troncos}{12}{subsection.4.2}
+\contentsline {section}{\numberline {5}Geometr\IeC {\'\i }a}{13}{section.5}
+\contentsline {subsection}{\numberline {5.1}\IeC {\'A}rea de un pol\IeC {\'\i }gono}{13}{subsection.5.1}
+\contentsline {subsection}{\numberline {5.2}Centro de masa de un pol\IeC {\'\i }gono}{14}{subsection.5.2}
+\contentsline {subsection}{\numberline {5.3}Convex hull: Graham Scan}{14}{subsection.5.3}
+\contentsline {subsection}{\numberline {5.4}Convex hull: Andrew's monotone chain}{16}{subsection.5.4}
+\contentsline {subsection}{\numberline {5.5}M\IeC {\'\i }nima distancia entre un punto y un segmento}{17}{subsection.5.5}
+\contentsline {subsection}{\numberline {5.6}M\IeC {\'\i }nima distancia entre un punto y una recta}{17}{subsection.5.6}
+\contentsline {subsection}{\numberline {5.7}Determinar si un pol\IeC {\'\i }gono es convexo}{17}{subsection.5.7}
+\contentsline {subsection}{\numberline {5.8}Determinar si un punto est\IeC {\'a} dentro de un pol\IeC {\'\i }gono convexo}{18}{subsection.5.8}
+\contentsline {subsection}{\numberline {5.9}Determinar si un punto est\IeC {\'a} dentro de un pol\IeC {\'\i }gono cualquiera}{18}{subsection.5.9}
+\contentsline {section}{\numberline {6}Miscel\IeC {\'a}neo}{20}{section.6}
+\contentsline {subsection}{\numberline {6.1}El \textit {parser} m\IeC {\'a}s r\IeC {\'a}pido del mundo}{20}{subsection.6.1}
+\contentsline {section}{\numberline {7}Java}{21}{section.7}
+\contentsline {subsection}{\numberline {7.1}Entrada desde entrada est\IeC {\'a}ndar}{21}{subsection.7.1}
+\contentsline {subsection}{\numberline {7.2}Entrada desde archivo}{22}{subsection.7.2}
+\contentsline {subsection}{\numberline {7.3}Mapas y sets}{23}{subsection.7.3}
+\contentsline {subsection}{\numberline {7.4}Colas de prioridad}{24}{subsection.7.4}
+\contentsline {section}{\numberline {8}C++}{25}{section.8}
+\contentsline {subsection}{\numberline {8.1}Entrada desde archivo}{25}{subsection.8.1}
+\contentsline {subsection}{\numberline {8.2}Strings con caract\IeC {\'e}res especiales}{26}{subsection.8.2}</diff>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/manual.toc</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,17 @@
+/*
+  Graham Scan.
+ */
 #include &lt;iostream&gt;
 #include &lt;vector&gt;
 #include &lt;algorithm&gt;
 #include &lt;iterator&gt;
-#include &lt;cmath&gt;
+#include &lt;math.h&gt;
+#include &lt;stdio.h&gt;
 
 using namespace std;
 
+const double pi = 2*acos(0);
+
 struct point{
   int x,y;
   point() {}
@@ -20,88 +26,56 @@ ostream&amp; operator&lt;&lt; (ostream&amp; out, const point&amp; c)
   return out;
 }
 
-//P es un pol&#237;gono ordenado anticlockwise.
-//Si es clockwise, retorna el area negativa.
-//Si no esta ordenado retorna pura mierda
-double area(const vector&lt;point&gt; &amp;p){
-  double r = 0.0;
-  for (int i=0; i&lt;p.size(); ++i){
-    int j = (i+1) % p.size();
-    r += p[i].x*p[j].y - p[j].x*p[i].y;
-  }
-  return r/2.0;
+inline int distsqr(const point &amp;a, const point &amp;b){
+  return (a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y);
+}
+
+inline double dist(const point &amp;a, const point &amp;b){
+  return sqrt(distsqr(a, b));
 }
 
-//retorna si c esta a la izquierda de el segmento AB
+//retorna &gt; 0 si c esta a la izquierda del segmento AB
+//retorna &lt; 0 si c esta a la derecha del segmento AB
+//retorna == 0 si c es colineal con el segmento AB
 inline int cross(const point &amp;a, const point &amp;b, const point &amp;c){
   return (b.x-a.x)*(c.y-a.y) - (c.x-a.x)*(b.y-a.y);
 }
 
 //Self &lt; that si esta a la derecha del segmento Pivot-That
 bool angleCmp(const point &amp;self, const point &amp;that){
-  return( cross(pivot, that, self) &lt; 0 );
-}
-
-inline int distsqr(const point &amp;a, const point &amp;b){
-  return (a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y);
+  int t = cross(pivot, that, self);
+  if (t &lt; 0) return true;
+  if (t == 0){
+    //Self &lt; that si est&#225; m&#225;s cerquita
+    return (distsqr(pivot, self) &lt; distsqr(pivot, that));
+  }
+  return false;
 }
 
-//vector p tiene los puntos ordenados anticlockwise
 vector&lt;point&gt; graham(vector&lt;point&gt; p){
+  //Metemos el m&#225;s abajo m&#225;s a la izquierda en la posici&#243;n 0
+  for (int i=1; i&lt;p.size(); ++i){
+    if (p[i].y &lt; p[0].y || (p[i].y == p[0].y &amp;&amp; p[i].x &lt; p[0].x ))
+      swap(p[0], p[i]);
+  }
+  
   pivot = p[0];
   sort(p.begin(), p.end(), angleCmp);
+
   //Ordenar por &#225;ngulo y eliminar repetidos.
-  //Si varios puntos tienen el mismo angulo se borran todos excepto el que est&#233; m&#225;s lejos
-  for (int i=1; i&lt;p.size()-1; ++i){    
-    if (cross(p[0], p[i], p[i+1]) == 0){ //Si son colineales...
-      if (distsqr(p[0], p[i]) &lt; distsqr(p[0], p[i+1])){ //Borrar el mas cercano
-	p.erase(p.begin() + i);
-      }else{
-	p.erase(p.begin() + i + 1);
-      }
-      i--;
-    }
-  }
-  
+  //Si varios puntos tienen el mismo angulo el m&#225;s lejano queda despu&#233;s en la lista
   vector&lt;point&gt; chull(p.begin(), p.begin()+3);
 
   //Ahora s&#237;!!!
   for (int i=3; i&lt;p.size(); ++i){
-    while ( chull.size() &gt;= 2 &amp;&amp; cross(chull[chull.size()-2], chull[chull.size()-1], p[i]) &lt; 0){
+    while ( chull.size() &gt;= 2 &amp;&amp; cross(chull[chull.size()-2], chull[chull.size()-1], p[i]) &lt;= 0){
       chull.erase(chull.end() - 1);
     }
     chull.push_back(p[i]);
   }
-
+  //chull contiene los puntos del convex hull ordenados anti-clockwise.
+  //No contiene ning&#250;n punto repetido.
+  //El primer punto no es el mismo que el &#250;ltimo, i.e, la &#250;ltima arista
+  //va de chull[chull.size()-1] a chull[0]
   return chull;
 }
-
-int main(){
-  int n;
-  int tileNo = 1;
-  while (cin &gt;&gt; n &amp;&amp; n){
-    vector&lt;point&gt; p;
-    point min(10000, 10000);
-    int minPos;
-    for (int i=0; i&lt;n; ++i){
-      int x, y;
-      cin &gt;&gt; x &gt;&gt; y;
-      p.push_back(point(x,y));      
-      if (y &lt; min.y || (y == min.y &amp;&amp; x &lt; min.x )){
-	min = point(x,y);
-	minPos = i;
-      }
-    }
-    double tileArea = fabs(area(p));
-
-    //Destruye el orden cw|ccw poligono, pero hay que hacerlo por que Graham necesita el pivote en p[0]
-    swap(p[0], p[minPos]);
-    pivot = p[0];
-    double chullArea = fabs(area(graham(p)));
-    
-    printf(&quot;Tile #%d\n&quot;, tileNo++);
-    printf(&quot;Wasted Space = %.2f \%\n\n&quot;,  (chullArea - tileArea) * 100.0 / chullArea);
-   
-  }
-  return 0;
-}</diff>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/geometria/grahamscan.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -2,14 +2,20 @@
 
 {\ttfamily \raggedright {
 \noindent
+\mbox{}\textit{\textcolor{Brown}{/*}} \\
+\mbox{}\textit{\textcolor{Brown}{\ \ Graham\ Scan.}} \\
+\mbox{}\textit{\textcolor{Brown}{\ */}} \\
 \mbox{}\textbf{\textcolor{RoyalBlue}{\#include}}\ \texttt{\textcolor{Red}{$&lt;$iostream$&gt;$}} \\
 \mbox{}\textbf{\textcolor{RoyalBlue}{\#include}}\ \texttt{\textcolor{Red}{$&lt;$vector$&gt;$}} \\
 \mbox{}\textbf{\textcolor{RoyalBlue}{\#include}}\ \texttt{\textcolor{Red}{$&lt;$algorithm$&gt;$}} \\
 \mbox{}\textbf{\textcolor{RoyalBlue}{\#include}}\ \texttt{\textcolor{Red}{$&lt;$iterator$&gt;$}} \\
-\mbox{}\textbf{\textcolor{RoyalBlue}{\#include}}\ \texttt{\textcolor{Red}{$&lt;$cmath$&gt;$}} \\
+\mbox{}\textbf{\textcolor{RoyalBlue}{\#include}}\ \texttt{\textcolor{Red}{$&lt;$math.h$&gt;$}} \\
+\mbox{}\textbf{\textcolor{RoyalBlue}{\#include}}\ \texttt{\textcolor{Red}{$&lt;$stdio.h$&gt;$}} \\
 \mbox{} \\
 \mbox{}\textbf{\textcolor{Blue}{using}}\ \textbf{\textcolor{Blue}{namespace}}\ std\textcolor{BrickRed}{;} \\
 \mbox{} \\
+\mbox{}\textbf{\textcolor{Blue}{const}}\ \textcolor{ForestGreen}{double}\ pi\ \textcolor{BrickRed}{=}\ \textcolor{Purple}{2}\textcolor{BrickRed}{*}\textbf{\textcolor{Black}{acos}}\textcolor{BrickRed}{(}\textcolor{Purple}{0}\textcolor{BrickRed}{);} \\
+\mbox{} \\
 \mbox{}\textbf{\textcolor{Blue}{struct}}\ point\textcolor{Red}{\{} \\
 \mbox{}\ \ \textcolor{ForestGreen}{int}\ x\textcolor{BrickRed}{,}y\textcolor{BrickRed}{;} \\
 \mbox{}\ \ \textbf{\textcolor{Black}{point}}\textcolor{BrickRed}{()}\ \textcolor{Red}{\{\}} \\
@@ -24,90 +30,58 @@
 \mbox{}\ \ \textbf{\textcolor{Blue}{return}}\ out\textcolor{BrickRed}{;} \\
 \mbox{}\textcolor{Red}{\}} \\
 \mbox{} \\
-\mbox{}\textit{\textcolor{Brown}{//P\ es\ un\ pol&#237;gono\ ordenado\ anticlockwise.}} \\
-\mbox{}\textit{\textcolor{Brown}{//Si\ es\ clockwise,\ retorna\ el\ area\ negativa.}} \\
-\mbox{}\textit{\textcolor{Brown}{//Si\ no\ esta\ ordenado\ retorna\ pura\ mierda}} \\
-\mbox{}\textcolor{ForestGreen}{double}\ \textbf{\textcolor{Black}{area}}\textcolor{BrickRed}{(}\textbf{\textcolor{Blue}{const}}\ vector\textcolor{BrickRed}{$&lt;$}point\textcolor{BrickRed}{$&gt;$}\ \textcolor{BrickRed}{\&amp;}p\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
-\mbox{}\ \ \textcolor{ForestGreen}{double}\ r\ \textcolor{BrickRed}{=}\ \textcolor{Purple}{0.0}\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \textbf{\textcolor{Blue}{for}}\ \textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ i\textcolor{BrickRed}{=}\textcolor{Purple}{0}\textcolor{BrickRed}{;}\ i\textcolor{BrickRed}{$&lt;$}p\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{size}}\textcolor{BrickRed}{();}\ \textcolor{BrickRed}{++}i\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
-\mbox{}\ \ \ \ \textcolor{ForestGreen}{int}\ j\ \textcolor{BrickRed}{=}\ \textcolor{BrickRed}{(}i\textcolor{BrickRed}{+}\textcolor{Purple}{1}\textcolor{BrickRed}{)}\ \textcolor{BrickRed}{\%}\ p\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{size}}\textcolor{BrickRed}{();} \\
-\mbox{}\ \ \ \ r\ \textcolor{BrickRed}{+=}\ p\textcolor{BrickRed}{[}i\textcolor{BrickRed}{].}x\textcolor{BrickRed}{*}p\textcolor{BrickRed}{[}j\textcolor{BrickRed}{].}y\ \textcolor{BrickRed}{-}\ p\textcolor{BrickRed}{[}j\textcolor{BrickRed}{].}x\textcolor{BrickRed}{*}p\textcolor{BrickRed}{[}i\textcolor{BrickRed}{].}y\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \textcolor{Red}{\}} \\
-\mbox{}\ \ \textbf{\textcolor{Blue}{return}}\ r\textcolor{BrickRed}{/}\textcolor{Purple}{2.0}\textcolor{BrickRed}{;} \\
+\mbox{}\textbf{\textcolor{Blue}{inline}}\ \textcolor{ForestGreen}{int}\ \textbf{\textcolor{Black}{distsqr}}\textcolor{BrickRed}{(}\textbf{\textcolor{Blue}{const}}\ point\ \textcolor{BrickRed}{\&amp;}a\textcolor{BrickRed}{,}\ \textbf{\textcolor{Blue}{const}}\ point\ \textcolor{BrickRed}{\&amp;}b\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
+\mbox{}\ \ \textbf{\textcolor{Blue}{return}}\ \textcolor{BrickRed}{(}a\textcolor{BrickRed}{.}x\ \textcolor{BrickRed}{-}\ b\textcolor{BrickRed}{.}x\textcolor{BrickRed}{)*(}a\textcolor{BrickRed}{.}x\ \textcolor{BrickRed}{-}\ b\textcolor{BrickRed}{.}x\textcolor{BrickRed}{)}\ \textcolor{BrickRed}{+}\ \textcolor{BrickRed}{(}a\textcolor{BrickRed}{.}y\ \textcolor{BrickRed}{-}\ b\textcolor{BrickRed}{.}y\textcolor{BrickRed}{)*(}a\textcolor{BrickRed}{.}y\ \textcolor{BrickRed}{-}\ b\textcolor{BrickRed}{.}y\textcolor{BrickRed}{);} \\
+\mbox{}\textcolor{Red}{\}} \\
+\mbox{} \\
+\mbox{}\textbf{\textcolor{Blue}{inline}}\ \textcolor{ForestGreen}{double}\ \textbf{\textcolor{Black}{dist}}\textcolor{BrickRed}{(}\textbf{\textcolor{Blue}{const}}\ point\ \textcolor{BrickRed}{\&amp;}a\textcolor{BrickRed}{,}\ \textbf{\textcolor{Blue}{const}}\ point\ \textcolor{BrickRed}{\&amp;}b\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
+\mbox{}\ \ \textbf{\textcolor{Blue}{return}}\ \textbf{\textcolor{Black}{sqrt}}\textcolor{BrickRed}{(}\textbf{\textcolor{Black}{distsqr}}\textcolor{BrickRed}{(}a\textcolor{BrickRed}{,}\ b\textcolor{BrickRed}{));} \\
 \mbox{}\textcolor{Red}{\}} \\
 \mbox{} \\
-\mbox{}\textit{\textcolor{Brown}{//retorna\ si\ c\ esta\ a\ la\ izquierda\ de\ el\ segmento\ AB}} \\
+\mbox{}\textit{\textcolor{Brown}{//retorna\ $&gt;$\ 0\ si\ c\ esta\ a\ la\ izquierda\ del\ segmento\ AB}} \\
+\mbox{}\textit{\textcolor{Brown}{//retorna\ $&lt;$\ 0\ si\ c\ esta\ a\ la\ derecha\ del\ segmento\ AB}} \\
+\mbox{}\textit{\textcolor{Brown}{//retorna\ ==\ 0\ si\ c\ es\ colineal\ con\ el\ segmento\ AB}} \\
 \mbox{}\textbf{\textcolor{Blue}{inline}}\ \textcolor{ForestGreen}{int}\ \textbf{\textcolor{Black}{cross}}\textcolor{BrickRed}{(}\textbf{\textcolor{Blue}{const}}\ point\ \textcolor{BrickRed}{\&amp;}a\textcolor{BrickRed}{,}\ \textbf{\textcolor{Blue}{const}}\ point\ \textcolor{BrickRed}{\&amp;}b\textcolor{BrickRed}{,}\ \textbf{\textcolor{Blue}{const}}\ point\ \textcolor{BrickRed}{\&amp;}c\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
 \mbox{}\ \ \textbf{\textcolor{Blue}{return}}\ \textcolor{BrickRed}{(}b\textcolor{BrickRed}{.}x\textcolor{BrickRed}{-}a\textcolor{BrickRed}{.}x\textcolor{BrickRed}{)*(}c\textcolor{BrickRed}{.}y\textcolor{BrickRed}{-}a\textcolor{BrickRed}{.}y\textcolor{BrickRed}{)}\ \textcolor{BrickRed}{-}\ \textcolor{BrickRed}{(}c\textcolor{BrickRed}{.}x\textcolor{BrickRed}{-}a\textcolor{BrickRed}{.}x\textcolor{BrickRed}{)*(}b\textcolor{BrickRed}{.}y\textcolor{BrickRed}{-}a\textcolor{BrickRed}{.}y\textcolor{BrickRed}{);} \\
 \mbox{}\textcolor{Red}{\}} \\
 \mbox{} \\
 \mbox{}\textit{\textcolor{Brown}{//Self\ $&lt;$\ that\ si\ esta\ a\ la\ derecha\ del\ segmento\ Pivot-That}} \\
 \mbox{}\textcolor{ForestGreen}{bool}\ \textbf{\textcolor{Black}{angleCmp}}\textcolor{BrickRed}{(}\textbf{\textcolor{Blue}{const}}\ point\ \textcolor{BrickRed}{\&amp;}self\textcolor{BrickRed}{,}\ \textbf{\textcolor{Blue}{const}}\ point\ \textcolor{BrickRed}{\&amp;}that\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
-\mbox{}\ \ \textbf{\textcolor{Blue}{return}}\textcolor{BrickRed}{(}\ \textbf{\textcolor{Black}{cross}}\textcolor{BrickRed}{(}pivot\textcolor{BrickRed}{,}\ that\textcolor{BrickRed}{,}\ self\textcolor{BrickRed}{)}\ \textcolor{BrickRed}{$&lt;$}\ \textcolor{Purple}{0}\ \textcolor{BrickRed}{);} \\
-\mbox{}\textcolor{Red}{\}} \\
-\mbox{} \\
-\mbox{}\textbf{\textcolor{Blue}{inline}}\ \textcolor{ForestGreen}{int}\ \textbf{\textcolor{Black}{distsqr}}\textcolor{BrickRed}{(}\textbf{\textcolor{Blue}{const}}\ point\ \textcolor{BrickRed}{\&amp;}a\textcolor{BrickRed}{,}\ \textbf{\textcolor{Blue}{const}}\ point\ \textcolor{BrickRed}{\&amp;}b\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
-\mbox{}\ \ \textbf{\textcolor{Blue}{return}}\ \textcolor{BrickRed}{(}a\textcolor{BrickRed}{.}x\ \textcolor{BrickRed}{-}\ b\textcolor{BrickRed}{.}x\textcolor{BrickRed}{)*(}a\textcolor{BrickRed}{.}x\ \textcolor{BrickRed}{-}\ b\textcolor{BrickRed}{.}x\textcolor{BrickRed}{)}\ \textcolor{BrickRed}{+}\ \textcolor{BrickRed}{(}a\textcolor{BrickRed}{.}y\ \textcolor{BrickRed}{-}\ b\textcolor{BrickRed}{.}y\textcolor{BrickRed}{)*(}a\textcolor{BrickRed}{.}y\ \textcolor{BrickRed}{-}\ b\textcolor{BrickRed}{.}y\textcolor{BrickRed}{);} \\
+\mbox{}\ \ \textcolor{ForestGreen}{int}\ t\ \textcolor{BrickRed}{=}\ \textbf{\textcolor{Black}{cross}}\textcolor{BrickRed}{(}pivot\textcolor{BrickRed}{,}\ that\textcolor{BrickRed}{,}\ self\textcolor{BrickRed}{);} \\
+\mbox{}\ \ \textbf{\textcolor{Blue}{if}}\ \textcolor{BrickRed}{(}t\ \textcolor{BrickRed}{$&lt;$}\ \textcolor{Purple}{0}\textcolor{BrickRed}{)}\ \textbf{\textcolor{Blue}{return}}\ \textbf{\textcolor{Blue}{true}}\textcolor{BrickRed}{;} \\
+\mbox{}\ \ \textbf{\textcolor{Blue}{if}}\ \textcolor{BrickRed}{(}t\ \textcolor{BrickRed}{==}\ \textcolor{Purple}{0}\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
+\mbox{}\ \ \ \ \textit{\textcolor{Brown}{//Self\ $&lt;$\ that\ si\ est&#225;\ m&#225;s\ cerquita}} \\
+\mbox{}\ \ \ \ \textbf{\textcolor{Blue}{return}}\ \textcolor{BrickRed}{(}\textbf{\textcolor{Black}{distsqr}}\textcolor{BrickRed}{(}pivot\textcolor{BrickRed}{,}\ self\textcolor{BrickRed}{)}\ \textcolor{BrickRed}{$&lt;$}\ \textbf{\textcolor{Black}{distsqr}}\textcolor{BrickRed}{(}pivot\textcolor{BrickRed}{,}\ that\textcolor{BrickRed}{));} \\
+\mbox{}\ \ \textcolor{Red}{\}} \\
+\mbox{}\ \ \textbf{\textcolor{Blue}{return}}\ \textbf{\textcolor{Blue}{false}}\textcolor{BrickRed}{;} \\
 \mbox{}\textcolor{Red}{\}} \\
 \mbox{} \\
-\mbox{}\textit{\textcolor{Brown}{//vector\ p\ tiene\ los\ puntos\ ordenados\ anticlockwise}} \\
 \mbox{}vector\textcolor{BrickRed}{$&lt;$}point\textcolor{BrickRed}{$&gt;$}\ \textbf{\textcolor{Black}{graham}}\textcolor{BrickRed}{(}vector\textcolor{BrickRed}{$&lt;$}point\textcolor{BrickRed}{$&gt;$}\ p\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
+\mbox{}\ \ \textit{\textcolor{Brown}{//Metemos\ el\ m&#225;s\ abajo\ m&#225;s\ a\ la\ izquierda\ en\ la\ posici&#243;n\ 0}} \\
+\mbox{}\ \ \textbf{\textcolor{Blue}{for}}\ \textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ i\textcolor{BrickRed}{=}\textcolor{Purple}{1}\textcolor{BrickRed}{;}\ i\textcolor{BrickRed}{$&lt;$}p\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{size}}\textcolor{BrickRed}{();}\ \textcolor{BrickRed}{++}i\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
+\mbox{}\ \ \ \ \textbf{\textcolor{Blue}{if}}\ \textcolor{BrickRed}{(}p\textcolor{BrickRed}{[}i\textcolor{BrickRed}{].}y\ \textcolor{BrickRed}{$&lt;$}\ p\textcolor{BrickRed}{[}\textcolor{Purple}{0}\textcolor{BrickRed}{].}y\ \textcolor{BrickRed}{$|$$|$}\ \textcolor{BrickRed}{(}p\textcolor{BrickRed}{[}i\textcolor{BrickRed}{].}y\ \textcolor{BrickRed}{==}\ p\textcolor{BrickRed}{[}\textcolor{Purple}{0}\textcolor{BrickRed}{].}y\ \textcolor{BrickRed}{\&amp;\&amp;}\ p\textcolor{BrickRed}{[}i\textcolor{BrickRed}{].}x\ \textcolor{BrickRed}{$&lt;$}\ p\textcolor{BrickRed}{[}\textcolor{Purple}{0}\textcolor{BrickRed}{].}x\ \textcolor{BrickRed}{))} \\
+\mbox{}\ \ \ \ \ \ \textbf{\textcolor{Black}{swap}}\textcolor{BrickRed}{(}p\textcolor{BrickRed}{[}\textcolor{Purple}{0}\textcolor{BrickRed}{],}\ p\textcolor{BrickRed}{[}i\textcolor{BrickRed}{]);} \\
+\mbox{}\ \ \textcolor{Red}{\}} \\
+\mbox{}\ \  \\
 \mbox{}\ \ pivot\ \textcolor{BrickRed}{=}\ p\textcolor{BrickRed}{[}\textcolor{Purple}{0}\textcolor{BrickRed}{];} \\
 \mbox{}\ \ \textbf{\textcolor{Black}{sort}}\textcolor{BrickRed}{(}p\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{begin}}\textcolor{BrickRed}{(),}\ p\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{end}}\textcolor{BrickRed}{(),}\ angleCmp\textcolor{BrickRed}{);} \\
+\mbox{} \\
 \mbox{}\ \ \textit{\textcolor{Brown}{//Ordenar\ por\ &#225;ngulo\ y\ eliminar\ repetidos.}} \\
-\mbox{}\ \ \textit{\textcolor{Brown}{//Si\ varios\ puntos\ tienen\ el\ mismo\ angulo\ se\ borran\ todos\ excepto\ el\ que\ est&#233;\ m&#225;s\ lejos}} \\
-\mbox{}\ \ \textbf{\textcolor{Blue}{for}}\ \textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ i\textcolor{BrickRed}{=}\textcolor{Purple}{1}\textcolor{BrickRed}{;}\ i\textcolor{BrickRed}{$&lt;$}p\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{size}}\textcolor{BrickRed}{()-}\textcolor{Purple}{1}\textcolor{BrickRed}{;}\ \textcolor{BrickRed}{++}i\textcolor{BrickRed}{)}\textcolor{Red}{\{}\ \ \ \  \\
-\mbox{}\ \ \ \ \textbf{\textcolor{Blue}{if}}\ \textcolor{BrickRed}{(}\textbf{\textcolor{Black}{cross}}\textcolor{BrickRed}{(}p\textcolor{BrickRed}{[}\textcolor{Purple}{0}\textcolor{BrickRed}{],}\ p\textcolor{BrickRed}{[}i\textcolor{BrickRed}{],}\ p\textcolor{BrickRed}{[}i\textcolor{BrickRed}{+}\textcolor{Purple}{1}\textcolor{BrickRed}{])}\ \textcolor{BrickRed}{==}\ \textcolor{Purple}{0}\textcolor{BrickRed}{)}\textcolor{Red}{\{}\ \textit{\textcolor{Brown}{//Si\ son\ colineales...}} \\
-\mbox{}\ \ \ \ \ \ \textbf{\textcolor{Blue}{if}}\ \textcolor{BrickRed}{(}\textbf{\textcolor{Black}{distsqr}}\textcolor{BrickRed}{(}p\textcolor{BrickRed}{[}\textcolor{Purple}{0}\textcolor{BrickRed}{],}\ p\textcolor{BrickRed}{[}i\textcolor{BrickRed}{])}\ \textcolor{BrickRed}{$&lt;$}\ \textbf{\textcolor{Black}{distsqr}}\textcolor{BrickRed}{(}p\textcolor{BrickRed}{[}\textcolor{Purple}{0}\textcolor{BrickRed}{],}\ p\textcolor{BrickRed}{[}i\textcolor{BrickRed}{+}\textcolor{Purple}{1}\textcolor{BrickRed}{]))}\textcolor{Red}{\{}\ \textit{\textcolor{Brown}{//Borrar\ el\ mas\ cercano}} \\
-\mbox{}\ \ \ \ \ \ \ \ p\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{erase}}\textcolor{BrickRed}{(}p\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{begin}}\textcolor{BrickRed}{()}\ \textcolor{BrickRed}{+}\ i\textcolor{BrickRed}{);} \\
-\mbox{}\ \ \ \ \ \ \textcolor{Red}{\}}\textbf{\textcolor{Blue}{else}}\textcolor{Red}{\{} \\
-\mbox{}\ \ \ \ \ \ \ \ p\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{erase}}\textcolor{BrickRed}{(}p\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{begin}}\textcolor{BrickRed}{()}\ \textcolor{BrickRed}{+}\ i\ \textcolor{BrickRed}{+}\ \textcolor{Purple}{1}\textcolor{BrickRed}{);} \\
-\mbox{}\ \ \ \ \ \ \textcolor{Red}{\}} \\
-\mbox{}\ \ \ \ \ \ i\textcolor{BrickRed}{-\/-;} \\
-\mbox{}\ \ \ \ \textcolor{Red}{\}} \\
-\mbox{}\ \ \textcolor{Red}{\}} \\
-\mbox{}\ \  \\
+\mbox{}\ \ \textit{\textcolor{Brown}{//Si\ varios\ puntos\ tienen\ el\ mismo\ angulo\ el\ m&#225;s\ lejano\ queda\ despu&#233;s\ en\ la\ lista}} \\
 \mbox{}\ \ vector\textcolor{BrickRed}{$&lt;$}point\textcolor{BrickRed}{$&gt;$}\ \textbf{\textcolor{Black}{chull}}\textcolor{BrickRed}{(}p\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{begin}}\textcolor{BrickRed}{(),}\ p\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{begin}}\textcolor{BrickRed}{()+}\textcolor{Purple}{3}\textcolor{BrickRed}{);} \\
 \mbox{} \\
 \mbox{}\ \ \textit{\textcolor{Brown}{//Ahora\ s&#237;!!!}} \\
 \mbox{}\ \ \textbf{\textcolor{Blue}{for}}\ \textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ i\textcolor{BrickRed}{=}\textcolor{Purple}{3}\textcolor{BrickRed}{;}\ i\textcolor{BrickRed}{$&lt;$}p\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{size}}\textcolor{BrickRed}{();}\ \textcolor{BrickRed}{++}i\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
-\mbox{}\ \ \ \ \textbf{\textcolor{Blue}{while}}\ \textcolor{BrickRed}{(}\ chull\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{size}}\textcolor{BrickRed}{()}\ \textcolor{BrickRed}{$&gt;$=}\ \textcolor{Purple}{2}\ \textcolor{BrickRed}{\&amp;\&amp;}\ \textbf{\textcolor{Black}{cross}}\textcolor{BrickRed}{(}chull\textcolor{BrickRed}{[}chull\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{size}}\textcolor{BrickRed}{()-}\textcolor{Purple}{2}\textcolor{BrickRed}{],}\ chull\textcolor{BrickRed}{[}chull\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{size}}\textcolor{BrickRed}{()-}\textcolor{Purple}{1}\textcolor{BrickRed}{],}\ p\textcolor{BrickRed}{[}i\textcolor{BrickRed}{])}\ \textcolor{BrickRed}{$&lt;$}\ \textcolor{Purple}{0}\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
+\mbox{}\ \ \ \ \textbf{\textcolor{Blue}{while}}\ \textcolor{BrickRed}{(}\ chull\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{size}}\textcolor{BrickRed}{()}\ \textcolor{BrickRed}{$&gt;$=}\ \textcolor{Purple}{2}\ \textcolor{BrickRed}{\&amp;\&amp;}\ \textbf{\textcolor{Black}{cross}}\textcolor{BrickRed}{(}chull\textcolor{BrickRed}{[}chull\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{size}}\textcolor{BrickRed}{()-}\textcolor{Purple}{2}\textcolor{BrickRed}{],}\ chull\textcolor{BrickRed}{[}chull\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{size}}\textcolor{BrickRed}{()-}\textcolor{Purple}{1}\textcolor{BrickRed}{],}\ p\textcolor{BrickRed}{[}i\textcolor{BrickRed}{])}\ \textcolor{BrickRed}{$&lt;$=}\ \textcolor{Purple}{0}\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
 \mbox{}\ \ \ \ \ \ chull\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{erase}}\textcolor{BrickRed}{(}chull\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{end}}\textcolor{BrickRed}{()}\ \textcolor{BrickRed}{-}\ \textcolor{Purple}{1}\textcolor{BrickRed}{);} \\
 \mbox{}\ \ \ \ \textcolor{Red}{\}} \\
 \mbox{}\ \ \ \ chull\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{push$\_$back}}\textcolor{BrickRed}{(}p\textcolor{BrickRed}{[}i\textcolor{BrickRed}{]);} \\
 \mbox{}\ \ \textcolor{Red}{\}} \\
-\mbox{} \\
+\mbox{}\ \ \textit{\textcolor{Brown}{//chull\ contiene\ los\ puntos\ del\ convex\ hull\ ordenados\ anti-clockwise.}} \\
+\mbox{}\ \ \textit{\textcolor{Brown}{//No\ contiene\ ning&#250;n\ punto\ repetido.}} \\
+\mbox{}\ \ \textit{\textcolor{Brown}{//El\ primer\ punto\ no\ es\ el\ mismo\ que\ el\ &#250;ltimo,\ i.e,\ la\ &#250;ltima\ arista}} \\
+\mbox{}\ \ \textit{\textcolor{Brown}{//va\ de\ chull[chull.size()-1]\ a\ chull[0]}} \\
 \mbox{}\ \ \textbf{\textcolor{Blue}{return}}\ chull\textcolor{BrickRed}{;} \\
 \mbox{}\textcolor{Red}{\}} \\
-\mbox{} \\
-\mbox{}\textcolor{ForestGreen}{int}\ \textbf{\textcolor{Black}{main}}\textcolor{BrickRed}{()}\textcolor{Red}{\{} \\
-\mbox{}\ \ \textcolor{ForestGreen}{int}\ n\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \textcolor{ForestGreen}{int}\ tileNo\ \textcolor{BrickRed}{=}\ \textcolor{Purple}{1}\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \textbf{\textcolor{Blue}{while}}\ \textcolor{BrickRed}{(}cin\ \textcolor{BrickRed}{$&gt;$$&gt;$}\ n\ \textcolor{BrickRed}{\&amp;\&amp;}\ n\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
-\mbox{}\ \ \ \ vector\textcolor{BrickRed}{$&lt;$}point\textcolor{BrickRed}{$&gt;$}\ p\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \ \ point\ \textbf{\textcolor{Black}{min}}\textcolor{BrickRed}{(}\textcolor{Purple}{10000}\textcolor{BrickRed}{,}\ \textcolor{Purple}{10000}\textcolor{BrickRed}{);} \\
-\mbox{}\ \ \ \ \textcolor{ForestGreen}{int}\ minPos\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \ \ \textbf{\textcolor{Blue}{for}}\ \textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ i\textcolor{BrickRed}{=}\textcolor{Purple}{0}\textcolor{BrickRed}{;}\ i\textcolor{BrickRed}{$&lt;$}n\textcolor{BrickRed}{;}\ \textcolor{BrickRed}{++}i\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
-\mbox{}\ \ \ \ \ \ \textcolor{ForestGreen}{int}\ x\textcolor{BrickRed}{,}\ y\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \ \ \ \ cin\ \textcolor{BrickRed}{$&gt;$$&gt;$}\ x\ \textcolor{BrickRed}{$&gt;$$&gt;$}\ y\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \ \ \ \ p\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{push$\_$back}}\textcolor{BrickRed}{(}\textbf{\textcolor{Black}{point}}\textcolor{BrickRed}{(}x\textcolor{BrickRed}{,}y\textcolor{BrickRed}{));}\ \ \ \ \ \  \\
-\mbox{}\ \ \ \ \ \ \textbf{\textcolor{Blue}{if}}\ \textcolor{BrickRed}{(}y\ \textcolor{BrickRed}{$&lt;$}\ min\textcolor{BrickRed}{.}y\ \textcolor{BrickRed}{$|$$|$}\ \textcolor{BrickRed}{(}y\ \textcolor{BrickRed}{==}\ min\textcolor{BrickRed}{.}y\ \textcolor{BrickRed}{\&amp;\&amp;}\ x\ \textcolor{BrickRed}{$&lt;$}\ min\textcolor{BrickRed}{.}x\ \textcolor{BrickRed}{))}\textcolor{Red}{\{} \\
-\mbox{}\ \ \ \ \ \ \ \ min\ \textcolor{BrickRed}{=}\ \textbf{\textcolor{Black}{point}}\textcolor{BrickRed}{(}x\textcolor{BrickRed}{,}y\textcolor{BrickRed}{);} \\
-\mbox{}\ \ \ \ \ \ \ \ minPos\ \textcolor{BrickRed}{=}\ i\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \ \ \ \ \textcolor{Red}{\}} \\
-\mbox{}\ \ \ \ \textcolor{Red}{\}} \\
-\mbox{}\ \ \ \ \textcolor{ForestGreen}{double}\ tileArea\ \textcolor{BrickRed}{=}\ \textbf{\textcolor{Black}{fabs}}\textcolor{BrickRed}{(}\textbf{\textcolor{Black}{area}}\textcolor{BrickRed}{(}p\textcolor{BrickRed}{));} \\
-\mbox{} \\
-\mbox{}\ \ \ \ \textit{\textcolor{Brown}{//Destruye\ el\ orden\ cw$|$ccw\ poligono,\ pero\ hay\ que\ hacerlo\ por\ que\ Graham\ necesita\ el\ pivote\ en\ p[0]}} \\
-\mbox{}\ \ \ \ \textbf{\textcolor{Black}{swap}}\textcolor{BrickRed}{(}p\textcolor{BrickRed}{[}\textcolor{Purple}{0}\textcolor{BrickRed}{],}\ p\textcolor{BrickRed}{[}minPos\textcolor{BrickRed}{]);} \\
-\mbox{}\ \ \ \ pivot\ \textcolor{BrickRed}{=}\ p\textcolor{BrickRed}{[}\textcolor{Purple}{0}\textcolor{BrickRed}{];} \\
-\mbox{}\ \ \ \ \textcolor{ForestGreen}{double}\ chullArea\ \textcolor{BrickRed}{=}\ \textbf{\textcolor{Black}{fabs}}\textcolor{BrickRed}{(}\textbf{\textcolor{Black}{area}}\textcolor{BrickRed}{(}\textbf{\textcolor{Black}{graham}}\textcolor{BrickRed}{(}p\textcolor{BrickRed}{)));} \\
-\mbox{}\ \ \ \  \\
-\mbox{}\ \ \ \ \textbf{\textcolor{Black}{printf}}\textcolor{BrickRed}{(}\texttt{\textcolor{Red}{&quot;{}Tile\ \#\%d}}\texttt{\textcolor{CarnationPink}{\textbackslash{}n}}\texttt{\textcolor{Red}{&quot;{}}}\textcolor{BrickRed}{,}\ tileNo\textcolor{BrickRed}{++);} \\
-\mbox{}\ \ \ \ \textbf{\textcolor{Black}{printf}}\textcolor{BrickRed}{(}\texttt{\textcolor{Red}{&quot;{}Wasted\ Space\ =\ \%.2f\ }}\texttt{\textcolor{CarnationPink}{\textbackslash{}\%\textbackslash{}n\textbackslash{}n}}\texttt{\textcolor{Red}{&quot;{}}}\textcolor{BrickRed}{,}\ \ \textcolor{BrickRed}{(}chullArea\ \textcolor{BrickRed}{-}\ tileArea\textcolor{BrickRed}{)}\ \textcolor{BrickRed}{*}\ \textcolor{Purple}{100.0}\ \textcolor{BrickRed}{/}\ chullArea\textcolor{BrickRed}{);} \\
-\mbox{}\ \ \  \\
-\mbox{}\ \ \textcolor{Red}{\}} \\
-\mbox{}\ \ \textbf{\textcolor{Blue}{return}}\ \textcolor{Purple}{0}\textcolor{BrickRed}{;} \\
-\mbox{}\textcolor{Red}{\}} \\
 
 } \normalfont\normalsize</diff>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/geometria/grahamscan.tex</filename>
    </modified>
    <modified>
      <diff>@@ -1,51 +1,20 @@
-#include &lt;iostream&gt;
-#include &lt;climits&gt;
-#include &lt;algorithm&gt;
-
-using namespace std;
-
+/*
+  g[i][j] = Distancia entre el nodo i y el j.
+ */
 unsigned long long g[101][101];
 
-int main(){
-  int casos;
-  cin &gt;&gt; casos;
-  bool first = true;
-  while (casos--){
-    if (!first) cout &lt;&lt; endl;
-    first = false;
+void floyd(){
+  //Llenar g
+  //...
 
-    int n, e, t;
-    cin &gt;&gt; n &gt;&gt; e &gt;&gt; t;
+  for (int k=0; k&lt;n; ++k){
     for (int i=0; i&lt;n; ++i){
       for (int j=0; j&lt;n; ++j){
-	g[i][j] = INT_MAX;
-      }
-      g[i][i] = 0;
-    }
-
-    int m;
-    cin &gt;&gt; m;
-    while (m--){
-      int i, j, k;
-      cin &gt;&gt; i &gt;&gt; j &gt;&gt; k;
-      g[i-1][j-1] = k;
-    }
-
-    for (int k=0; k&lt;n; ++k){
-      for (int i=0; i&lt;n; ++i){
-	for (int j=0; j&lt;n; ++j){
-	  g[i][j] = min(g[i][j], g[i][k] + g[k][j]);
-	}
+	g[i][j] = min(g[i][j], g[i][k] + g[k][j]);
       }
     }
-    
-    int r=0;
-    e -= 1;
-    for (int i=0; i&lt;n; ++i){
-      r += ((g[i][e] &lt;= t) ? 1 : 0);      
-    }
-
-    cout &lt;&lt; r &lt;&lt; endl;
   }
-  return 0;
+  /*
+    Ac&#225; se cumple que g[i][j] = Longitud de la ruta m&#225;s corta de i a j.
+   */
 }</diff>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/grafos/floyd.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -2,56 +2,25 @@
 
 {\ttfamily \raggedright {
 \noindent
-\mbox{}\textbf{\textcolor{RoyalBlue}{\#include}}\ \texttt{\textcolor{Red}{$&lt;$iostream$&gt;$}} \\
-\mbox{}\textbf{\textcolor{RoyalBlue}{\#include}}\ \texttt{\textcolor{Red}{$&lt;$climits$&gt;$}} \\
-\mbox{}\textbf{\textcolor{RoyalBlue}{\#include}}\ \texttt{\textcolor{Red}{$&lt;$algorithm$&gt;$}} \\
-\mbox{} \\
-\mbox{}\textbf{\textcolor{Blue}{using}}\ \textbf{\textcolor{Blue}{namespace}}\ std\textcolor{BrickRed}{;} \\
-\mbox{} \\
+\mbox{}\textit{\textcolor{Brown}{/*}} \\
+\mbox{}\textit{\textcolor{Brown}{\ \ g[i][j]\ =\ Distancia\ entre\ el\ nodo\ i\ y\ el\ j.}} \\
+\mbox{}\textit{\textcolor{Brown}{\ */}} \\
 \mbox{}\textcolor{ForestGreen}{unsigned}\ \textcolor{ForestGreen}{long}\ \textcolor{ForestGreen}{long}\ g\textcolor{BrickRed}{[}\textcolor{Purple}{101}\textcolor{BrickRed}{][}\textcolor{Purple}{101}\textcolor{BrickRed}{];} \\
 \mbox{} \\
-\mbox{}\textcolor{ForestGreen}{int}\ \textbf{\textcolor{Black}{main}}\textcolor{BrickRed}{()}\textcolor{Red}{\{} \\
-\mbox{}\ \ \textcolor{ForestGreen}{int}\ casos\textcolor{BrickRed}{;} \\
-\mbox{}\ \ cin\ \textcolor{BrickRed}{$&gt;$$&gt;$}\ casos\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \textcolor{ForestGreen}{bool}\ first\ \textcolor{BrickRed}{=}\ \textbf{\textcolor{Blue}{true}}\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \textbf{\textcolor{Blue}{while}}\ \textcolor{BrickRed}{(}casos\textcolor{BrickRed}{-\/-)}\textcolor{Red}{\{} \\
-\mbox{}\ \ \ \ \textbf{\textcolor{Blue}{if}}\ \textcolor{BrickRed}{(!}first\textcolor{BrickRed}{)}\ cout\ \textcolor{BrickRed}{$&lt;$$&lt;$}\ endl\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \ \ first\ \textcolor{BrickRed}{=}\ \textbf{\textcolor{Blue}{false}}\textcolor{BrickRed}{;} \\
+\mbox{}\textcolor{ForestGreen}{void}\ \textbf{\textcolor{Black}{floyd}}\textcolor{BrickRed}{()}\textcolor{Red}{\{} \\
+\mbox{}\ \ \textit{\textcolor{Brown}{//Llenar\ g}} \\
+\mbox{}\ \ \textit{\textcolor{Brown}{//...}} \\
 \mbox{} \\
-\mbox{}\ \ \ \ \textcolor{ForestGreen}{int}\ n\textcolor{BrickRed}{,}\ e\textcolor{BrickRed}{,}\ t\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \ \ cin\ \textcolor{BrickRed}{$&gt;$$&gt;$}\ n\ \textcolor{BrickRed}{$&gt;$$&gt;$}\ e\ \textcolor{BrickRed}{$&gt;$$&gt;$}\ t\textcolor{BrickRed}{;} \\
+\mbox{}\ \ \textbf{\textcolor{Blue}{for}}\ \textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ k\textcolor{BrickRed}{=}\textcolor{Purple}{0}\textcolor{BrickRed}{;}\ k\textcolor{BrickRed}{$&lt;$}n\textcolor{BrickRed}{;}\ \textcolor{BrickRed}{++}k\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
 \mbox{}\ \ \ \ \textbf{\textcolor{Blue}{for}}\ \textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ i\textcolor{BrickRed}{=}\textcolor{Purple}{0}\textcolor{BrickRed}{;}\ i\textcolor{BrickRed}{$&lt;$}n\textcolor{BrickRed}{;}\ \textcolor{BrickRed}{++}i\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
 \mbox{}\ \ \ \ \ \ \textbf{\textcolor{Blue}{for}}\ \textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ j\textcolor{BrickRed}{=}\textcolor{Purple}{0}\textcolor{BrickRed}{;}\ j\textcolor{BrickRed}{$&lt;$}n\textcolor{BrickRed}{;}\ \textcolor{BrickRed}{++}j\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
-\mbox{}\ \ \ \ \ \ \ \ g\textcolor{BrickRed}{[}i\textcolor{BrickRed}{][}j\textcolor{BrickRed}{]}\ \textcolor{BrickRed}{=}\ INT$\_$MAX\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \ \ \ \ \textcolor{Red}{\}} \\
-\mbox{}\ \ \ \ \ \ g\textcolor{BrickRed}{[}i\textcolor{BrickRed}{][}i\textcolor{BrickRed}{]}\ \textcolor{BrickRed}{=}\ \textcolor{Purple}{0}\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \ \ \textcolor{Red}{\}} \\
-\mbox{} \\
-\mbox{}\ \ \ \ \textcolor{ForestGreen}{int}\ m\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \ \ cin\ \textcolor{BrickRed}{$&gt;$$&gt;$}\ m\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \ \ \textbf{\textcolor{Blue}{while}}\ \textcolor{BrickRed}{(}m\textcolor{BrickRed}{-\/-)}\textcolor{Red}{\{} \\
-\mbox{}\ \ \ \ \ \ \textcolor{ForestGreen}{int}\ i\textcolor{BrickRed}{,}\ j\textcolor{BrickRed}{,}\ k\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \ \ \ \ cin\ \textcolor{BrickRed}{$&gt;$$&gt;$}\ i\ \textcolor{BrickRed}{$&gt;$$&gt;$}\ j\ \textcolor{BrickRed}{$&gt;$$&gt;$}\ k\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \ \ \ \ g\textcolor{BrickRed}{[}i\textcolor{BrickRed}{-}\textcolor{Purple}{1}\textcolor{BrickRed}{][}j\textcolor{BrickRed}{-}\textcolor{Purple}{1}\textcolor{BrickRed}{]}\ \textcolor{BrickRed}{=}\ k\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \ \ \textcolor{Red}{\}} \\
-\mbox{} \\
-\mbox{}\ \ \ \ \textbf{\textcolor{Blue}{for}}\ \textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ k\textcolor{BrickRed}{=}\textcolor{Purple}{0}\textcolor{BrickRed}{;}\ k\textcolor{BrickRed}{$&lt;$}n\textcolor{BrickRed}{;}\ \textcolor{BrickRed}{++}k\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
-\mbox{}\ \ \ \ \ \ \textbf{\textcolor{Blue}{for}}\ \textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ i\textcolor{BrickRed}{=}\textcolor{Purple}{0}\textcolor{BrickRed}{;}\ i\textcolor{BrickRed}{$&lt;$}n\textcolor{BrickRed}{;}\ \textcolor{BrickRed}{++}i\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
-\mbox{}\ \ \ \ \ \ \ \ \textbf{\textcolor{Blue}{for}}\ \textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ j\textcolor{BrickRed}{=}\textcolor{Purple}{0}\textcolor{BrickRed}{;}\ j\textcolor{BrickRed}{$&lt;$}n\textcolor{BrickRed}{;}\ \textcolor{BrickRed}{++}j\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
-\mbox{}\ \ \ \ \ \ \ \ \ \ g\textcolor{BrickRed}{[}i\textcolor{BrickRed}{][}j\textcolor{BrickRed}{]}\ \textcolor{BrickRed}{=}\ \textbf{\textcolor{Black}{min}}\textcolor{BrickRed}{(}g\textcolor{BrickRed}{[}i\textcolor{BrickRed}{][}j\textcolor{BrickRed}{],}\ g\textcolor{BrickRed}{[}i\textcolor{BrickRed}{][}k\textcolor{BrickRed}{]}\ \textcolor{BrickRed}{+}\ g\textcolor{BrickRed}{[}k\textcolor{BrickRed}{][}j\textcolor{BrickRed}{]);} \\
-\mbox{}\ \ \ \ \ \ \ \ \textcolor{Red}{\}} \\
+\mbox{}\ \ \ \ \ \ \ \ g\textcolor{BrickRed}{[}i\textcolor{BrickRed}{][}j\textcolor{BrickRed}{]}\ \textcolor{BrickRed}{=}\ \textbf{\textcolor{Black}{min}}\textcolor{BrickRed}{(}g\textcolor{BrickRed}{[}i\textcolor{BrickRed}{][}j\textcolor{BrickRed}{],}\ g\textcolor{BrickRed}{[}i\textcolor{BrickRed}{][}k\textcolor{BrickRed}{]}\ \textcolor{BrickRed}{+}\ g\textcolor{BrickRed}{[}k\textcolor{BrickRed}{][}j\textcolor{BrickRed}{]);} \\
 \mbox{}\ \ \ \ \ \ \textcolor{Red}{\}} \\
 \mbox{}\ \ \ \ \textcolor{Red}{\}} \\
-\mbox{}\ \ \ \  \\
-\mbox{}\ \ \ \ \textcolor{ForestGreen}{int}\ r\textcolor{BrickRed}{=}\textcolor{Purple}{0}\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \ \ e\ \textcolor{BrickRed}{-=}\ \textcolor{Purple}{1}\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \ \ \textbf{\textcolor{Blue}{for}}\ \textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ i\textcolor{BrickRed}{=}\textcolor{Purple}{0}\textcolor{BrickRed}{;}\ i\textcolor{BrickRed}{$&lt;$}n\textcolor{BrickRed}{;}\ \textcolor{BrickRed}{++}i\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
-\mbox{}\ \ \ \ \ \ r\ \textcolor{BrickRed}{+=}\ \textcolor{BrickRed}{((}g\textcolor{BrickRed}{[}i\textcolor{BrickRed}{][}e\textcolor{BrickRed}{]}\ \textcolor{BrickRed}{$&lt;$=}\ t\textcolor{BrickRed}{)}\ \textcolor{BrickRed}{?}\ \textcolor{Purple}{1}\ \textcolor{BrickRed}{:}\ \textcolor{Purple}{0}\textcolor{BrickRed}{);}\ \ \ \ \ \  \\
-\mbox{}\ \ \ \ \textcolor{Red}{\}} \\
-\mbox{} \\
-\mbox{}\ \ \ \ cout\ \textcolor{BrickRed}{$&lt;$$&lt;$}\ r\ \textcolor{BrickRed}{$&lt;$$&lt;$}\ endl\textcolor{BrickRed}{;} \\
 \mbox{}\ \ \textcolor{Red}{\}} \\
-\mbox{}\ \ \textbf{\textcolor{Blue}{return}}\ \textcolor{Purple}{0}\textcolor{BrickRed}{;} \\
+\mbox{}\ \ \textit{\textcolor{Brown}{/*}} \\
+\mbox{}\textit{\textcolor{Brown}{\ \ \ \ Ac&#225;\ se\ cumple\ que\ g[i][j]\ =\ Longitud\ de\ la\ ruta\ m&#225;s\ corta\ de\ i\ a\ j.}} \\
+\mbox{}\textit{\textcolor{Brown}{\ \ \ */}} \\
 \mbox{}\textcolor{Red}{\}} \\
 
 } \normalfont\normalsize</diff>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/grafos/floyd.tex</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,11 @@
-
 int cap[MAXN+1][MAXN+1], flow[MAXN+1][MAXN+1], prev[MAXN+1];
 
+/*
+  cap[i][j] = Capacidad de la arista (i, j).
+  flow[i][j] = Flujo actual de i a j.
+  prev[i] = Predecesor del nodo i en un camino de aumentaci&#243;n.
+ */
+
 int fordFulkerson(int n, int s, int t){
   int ans = 0;
   for (int i=0; i&lt;n; ++i) fill(flow[i], flow[i]+n, 0);</diff>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/grafos/ford_fulkerson.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -2,9 +2,14 @@
 
 {\ttfamily \raggedright {
 \noindent
-\mbox{} \\
 \mbox{}\textcolor{ForestGreen}{int}\ cap\textcolor{BrickRed}{[}MAXN\textcolor{BrickRed}{+}\textcolor{Purple}{1}\textcolor{BrickRed}{][}MAXN\textcolor{BrickRed}{+}\textcolor{Purple}{1}\textcolor{BrickRed}{],}\ flow\textcolor{BrickRed}{[}MAXN\textcolor{BrickRed}{+}\textcolor{Purple}{1}\textcolor{BrickRed}{][}MAXN\textcolor{BrickRed}{+}\textcolor{Purple}{1}\textcolor{BrickRed}{],}\ prev\textcolor{BrickRed}{[}MAXN\textcolor{BrickRed}{+}\textcolor{Purple}{1}\textcolor{BrickRed}{];} \\
 \mbox{} \\
+\mbox{}\textit{\textcolor{Brown}{/*}} \\
+\mbox{}\textit{\textcolor{Brown}{\ \ cap[i][j]\ =\ Capacidad\ de\ la\ arista\ (i,\ j).}} \\
+\mbox{}\textit{\textcolor{Brown}{\ \ flow[i][j]\ =\ Flujo\ actual\ de\ i\ a\ j.}} \\
+\mbox{}\textit{\textcolor{Brown}{\ \ prev[i]\ =\ Predecesor\ del\ nodo\ i\ en\ un\ camino\ de\ aumentaci&#243;n.}} \\
+\mbox{}\textit{\textcolor{Brown}{\ */}} \\
+\mbox{} \\
 \mbox{}\textcolor{ForestGreen}{int}\ \textbf{\textcolor{Black}{fordFulkerson}}\textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ n\textcolor{BrickRed}{,}\ \textcolor{ForestGreen}{int}\ s\textcolor{BrickRed}{,}\ \textcolor{ForestGreen}{int}\ t\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
 \mbox{}\ \ \textcolor{ForestGreen}{int}\ ans\ \textcolor{BrickRed}{=}\ \textcolor{Purple}{0}\textcolor{BrickRed}{;} \\
 \mbox{}\ \ \textbf{\textcolor{Blue}{for}}\ \textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ i\textcolor{BrickRed}{=}\textcolor{Purple}{0}\textcolor{BrickRed}{;}\ i\textcolor{BrickRed}{$&lt;$}n\textcolor{BrickRed}{;}\ \textcolor{BrickRed}{++}i\textcolor{BrickRed}{)}\ \textbf{\textcolor{Black}{fill}}\textcolor{BrickRed}{(}flow\textcolor{BrickRed}{[}i\textcolor{BrickRed}{],}\ flow\textcolor{BrickRed}{[}i\textcolor{BrickRed}{]+}n\textcolor{BrickRed}{,}\ \textcolor{Purple}{0}\textcolor{BrickRed}{);} \\</diff>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/grafos/ford_fulkerson.tex</filename>
    </modified>
    <modified>
      <diff>@@ -17,7 +17,6 @@ struct edge{
 };
 
 
-
 /* Union find */
 int p[10001], rank[10001];
 void make_set(int x){ p[x] = x, rank[x] = 0; }
@@ -48,7 +47,7 @@ int main(){
     for (int i=0; i&lt;e.size(); ++i){
       int u = e[i].start, v = e[i].end, w = e[i].weight;
       if (find_set(u) != find_set(v)){
-        //xprintf(&quot;Joining %d with %d using weight %d\n&quot;, u, v, w);
+        //printf(&quot;Joining %d with %d using weight %d\n&quot;, u, v, w);
         total -= w;
         merge(u, v);
       }</diff>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/grafos/kruskal.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -21,7 +21,6 @@
 \mbox{}\textcolor{Red}{\}}\textcolor{BrickRed}{;} \\
 \mbox{} \\
 \mbox{} \\
-\mbox{} \\
 \mbox{}\textit{\textcolor{Brown}{/*\ Union\ find\ */}} \\
 \mbox{}\textcolor{ForestGreen}{int}\ p\textcolor{BrickRed}{[}\textcolor{Purple}{10001}\textcolor{BrickRed}{],}\ rank\textcolor{BrickRed}{[}\textcolor{Purple}{10001}\textcolor{BrickRed}{];} \\
 \mbox{}\textcolor{ForestGreen}{void}\ \textbf{\textcolor{Black}{make$\_$set}}\textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ x\textcolor{BrickRed}{)}\textcolor{Red}{\{}\ p\textcolor{BrickRed}{[}x\textcolor{BrickRed}{]}\ \textcolor{BrickRed}{=}\ x\textcolor{BrickRed}{,}\ rank\textcolor{BrickRed}{[}x\textcolor{BrickRed}{]}\ \textcolor{BrickRed}{=}\ \textcolor{Purple}{0}\textcolor{BrickRed}{;}\ \textcolor{Red}{\}} \\
@@ -52,7 +51,7 @@
 \mbox{}\ \ \ \ \textbf{\textcolor{Blue}{for}}\ \textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ i\textcolor{BrickRed}{=}\textcolor{Purple}{0}\textcolor{BrickRed}{;}\ i\textcolor{BrickRed}{$&lt;$}e\textcolor{BrickRed}{.}\textbf{\textcolor{Black}{size}}\textcolor{BrickRed}{();}\ \textcolor{BrickRed}{++}i\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
 \mbox{}\ \ \ \ \ \ \textcolor{ForestGreen}{int}\ u\ \textcolor{BrickRed}{=}\ e\textcolor{BrickRed}{[}i\textcolor{BrickRed}{].}start\textcolor{BrickRed}{,}\ v\ \textcolor{BrickRed}{=}\ e\textcolor{BrickRed}{[}i\textcolor{BrickRed}{].}end\textcolor{BrickRed}{,}\ w\ \textcolor{BrickRed}{=}\ e\textcolor{BrickRed}{[}i\textcolor{BrickRed}{].}weight\textcolor{BrickRed}{;} \\
 \mbox{}\ \ \ \ \ \ \textbf{\textcolor{Blue}{if}}\ \textcolor{BrickRed}{(}\textbf{\textcolor{Black}{find$\_$set}}\textcolor{BrickRed}{(}u\textcolor{BrickRed}{)}\ \textcolor{BrickRed}{!=}\ \textbf{\textcolor{Black}{find$\_$set}}\textcolor{BrickRed}{(}v\textcolor{BrickRed}{))}\textcolor{Red}{\{} \\
-\mbox{}\ \ \ \ \ \ \ \ \textit{\textcolor{Brown}{//xprintf(&quot;{}Joining\ \%d\ with\ \%d\ using\ weight\ \%d\textbackslash{}n&quot;{},\ u,\ v,\ w);}} \\
+\mbox{}\ \ \ \ \ \ \ \ \textit{\textcolor{Brown}{//printf(&quot;{}Joining\ \%d\ with\ \%d\ using\ weight\ \%d\textbackslash{}n&quot;{},\ u,\ v,\ w);}} \\
 \mbox{}\ \ \ \ \ \ \ \ total\ \textcolor{BrickRed}{-=}\ w\textcolor{BrickRed}{;} \\
 \mbox{}\ \ \ \ \ \ \ \ \textbf{\textcolor{Black}{merge}}\textcolor{BrickRed}{(}u\textcolor{BrickRed}{,}\ v\textcolor{BrickRed}{);} \\
 \mbox{}\ \ \ \ \ \ \textcolor{Red}{\}} \\</diff>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/grafos/kruskal.tex</filename>
    </modified>
    <modified>
      <diff>@@ -9,13 +9,12 @@ void buildCriba(){
   memset(criba, false, sizeof(criba));
 
   criba[0] = criba[1] = true;
-  for (int i=2; i&lt;=SIZE; i += 2){
+  for (int i=4; i&lt;=SIZE; i += 2){
     criba[i] = true;
   }
-  
-  for (int i=3; i&lt;=SIZE; i += 2){
+  for (int i=3; i*i&lt;=SIZE; i += 2){
     if (!criba[i]){
-      for (int j=i+i; j&lt;=SIZE; j += i){
+      for (int j=i*i; j&lt;=SIZE; j += i){
 	criba[j] = true;
       }
     }</diff>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/number_theory/criba.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -13,13 +13,12 @@
 \mbox{}\ \ \textbf{\textcolor{Black}{memset}}\textcolor{BrickRed}{(}criba\textcolor{BrickRed}{,}\ \textbf{\textcolor{Blue}{false}}\textcolor{BrickRed}{,}\ \textbf{\textcolor{Blue}{sizeof}}\textcolor{BrickRed}{(}criba\textcolor{BrickRed}{));} \\
 \mbox{} \\
 \mbox{}\ \ criba\textcolor{BrickRed}{[}\textcolor{Purple}{0}\textcolor{BrickRed}{]}\ \textcolor{BrickRed}{=}\ criba\textcolor{BrickRed}{[}\textcolor{Purple}{1}\textcolor{BrickRed}{]}\ \textcolor{BrickRed}{=}\ \textbf{\textcolor{Blue}{true}}\textcolor{BrickRed}{;} \\
-\mbox{}\ \ \textbf{\textcolor{Blue}{for}}\ \textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ i\textcolor{BrickRed}{=}\textcolor{Purple}{2}\textcolor{BrickRed}{;}\ i\textcolor{BrickRed}{$&lt;$=}SIZE\textcolor{BrickRed}{;}\ i\ \textcolor{BrickRed}{+=}\ \textcolor{Purple}{2}\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
+\mbox{}\ \ \textbf{\textcolor{Blue}{for}}\ \textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ i\textcolor{BrickRed}{=}\textcolor{Purple}{4}\textcolor{BrickRed}{;}\ i\textcolor{BrickRed}{$&lt;$=}SIZE\textcolor{BrickRed}{;}\ i\ \textcolor{BrickRed}{+=}\ \textcolor{Purple}{2}\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
 \mbox{}\ \ \ \ criba\textcolor{BrickRed}{[}i\textcolor{BrickRed}{]}\ \textcolor{BrickRed}{=}\ \textbf{\textcolor{Blue}{true}}\textcolor{BrickRed}{;} \\
 \mbox{}\ \ \textcolor{Red}{\}} \\
-\mbox{}\ \  \\
-\mbox{}\ \ \textbf{\textcolor{Blue}{for}}\ \textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ i\textcolor{BrickRed}{=}\textcolor{Purple}{3}\textcolor{BrickRed}{;}\ i\textcolor{BrickRed}{$&lt;$=}SIZE\textcolor{BrickRed}{;}\ i\ \textcolor{BrickRed}{+=}\ \textcolor{Purple}{2}\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
+\mbox{}\ \ \textbf{\textcolor{Blue}{for}}\ \textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ i\textcolor{BrickRed}{=}\textcolor{Purple}{3}\textcolor{BrickRed}{;}\ i\textcolor{BrickRed}{*}i\textcolor{BrickRed}{$&lt;$=}SIZE\textcolor{BrickRed}{;}\ i\ \textcolor{BrickRed}{+=}\ \textcolor{Purple}{2}\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
 \mbox{}\ \ \ \ \textbf{\textcolor{Blue}{if}}\ \textcolor{BrickRed}{(!}criba\textcolor{BrickRed}{[}i\textcolor{BrickRed}{])}\textcolor{Red}{\{} \\
-\mbox{}\ \ \ \ \ \ \textbf{\textcolor{Blue}{for}}\ \textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ j\textcolor{BrickRed}{=}i\textcolor{BrickRed}{+}i\textcolor{BrickRed}{;}\ j\textcolor{BrickRed}{$&lt;$=}SIZE\textcolor{BrickRed}{;}\ j\ \textcolor{BrickRed}{+=}\ i\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
+\mbox{}\ \ \ \ \ \ \textbf{\textcolor{Blue}{for}}\ \textcolor{BrickRed}{(}\textcolor{ForestGreen}{int}\ j\textcolor{BrickRed}{=}i\textcolor{BrickRed}{*}i\textcolor{BrickRed}{;}\ j\textcolor{BrickRed}{$&lt;$=}SIZE\textcolor{BrickRed}{;}\ j\ \textcolor{BrickRed}{+=}\ i\textcolor{BrickRed}{)}\textcolor{Red}{\{} \\
 \mbox{}\ \ \ \ \ \ \ \ criba\textcolor{BrickRed}{[}j\textcolor{BrickRed}{]}\ \textcolor{BrickRed}{=}\ \textbf{\textcolor{Blue}{true}}\textcolor{BrickRed}{;} \\
 \mbox{}\ \ \ \ \ \ \textcolor{Red}{\}} \\
 \mbox{}\ \ \ \ \textcolor{Red}{\}} \\</diff>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/number_theory/criba.tex</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>Mi manual de algoritmos/version_maraton_interuniversitaria_2008-2/src/c++/highlight.sh</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>1fa74fedda9db2d25d1d790fa0b4ddd4d28fbe8b</id>
    </parent>
  </parents>
  <author>
    <name>Familia</name>
    <email>andmej@gmail.com</email>
  </author>
  <url>http://github.com/andmej/acm/commit/23cd3ed841a8eed5a2d59fdec042f9584f38cc54</url>
  <id>23cd3ed841a8eed5a2d59fdec042f9584f38cc54</id>
  <committed-date>2008-09-21T09:53:18-07:00</committed-date>
  <authored-date>2008-09-21T09:53:18-07:00</authored-date>
  <message>11088 - End up with more teams (DP), 11282 - Mixing invitations &amp; 1481 - Arrange the Numbers (Inclusi&#243;n-exclusi&#243;n)</message>
  <tree>527b1949c821b25180fefbe203970b613e6f4173</tree>
  <committer>
    <name>Familia</name>
    <email>andmej@gmail.com</email>
  </committer>
</commit>
