summaryrefslogtreecommitdiff
path: root/trees/blog/obi2018-maximin.typ
diff options
context:
space:
mode:
Diffstat (limited to 'trees/blog/obi2018-maximin.typ')
-rw-r--r--trees/blog/obi2018-maximin.typ38
1 files changed, 38 insertions, 0 deletions
diff --git a/trees/blog/obi2018-maximin.typ b/trees/blog/obi2018-maximin.typ
new file mode 100644
index 0000000..ac24be8
--- /dev/null
+++ b/trees/blog/obi2018-maximin.typ
@@ -0,0 +1,38 @@
+#import "html_elements.typ": post
+#import "./lib.typ": flex, svg_inline
+
+#show: post
+
+- #link(
+ "https://olimpiada.ic.unicamp.br/pratique/ps/2018/f3/maximin/",
+ )[Enunciado]
+
+Como o tamanho máximo do vetor é #svg_inline[$10^5$] podemos ordená-lo. Fazendo isso podemos ver que o número que estamos procurando está
+entre dois números vizinhos no vetor ou está em alguma das extremidades.
+
+```cpp
+#include <bits/stdc++.h>
+using namespace std;
+
+int main() {
+ int n,r,l;
+ scanf("%d%d%d",&n,&r,&l);
+ int arr[n];
+ for(int i=0;i<n;i++) scanf("%d",&arr[i]);
+
+ sort(arr,arr+n);
+
+ int dif=0;
+ for(int i=1;i<n;i++) {
+ int mid=(arr[i]+arr[i-1])/2;
+ if(mid>=r&&mid<=l) dif=max(dif,min(abs(mid-arr[i]),abs(mid-arr[i-1])));
+ }
+
+ if(l>arr[n-1]) dif=max(dif, l-arr[n-1]);
+ if(r<arr[0]) dif=max(dif,arr[0]-r);
+
+ printf("%d\n",dif);
+
+ return 0;
+}
+```