diff options
Diffstat (limited to 'trees/blog/obi2018-maximin.typ')
| -rw-r--r-- | trees/blog/obi2018-maximin.typ | 38 |
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; +} +``` |
