summaryrefslogtreecommitdiff
path: root/trees/blog/obi2018-maximin.typ
blob: ac24be81b0e078ff306bfe1f83d68008b162bcc8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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;
}
```