diff options
Diffstat (limited to 'trees/blog/obi2018-cinco.typ')
| -rw-r--r-- | trees/blog/obi2018-cinco.typ | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/trees/blog/obi2018-cinco.typ b/trees/blog/obi2018-cinco.typ new file mode 100644 index 0000000..0b9115e --- /dev/null +++ b/trees/blog/obi2018-cinco.typ @@ -0,0 +1,46 @@ +#import "html_elements.typ": post +#import "./lib.typ": flex, svg_inline + +#show: post + +- #link("https://olimpiada.ic.unicamp.br/pratique/ps/2018/f3/cinco/")[Enunciado] + +Podemos criar um algoritmo guloso simples, trocar sempre (em ordem): + +1. O dígito mais significativo que for trocado por um número maior do que ele +2. (na falha do primeiro) O dígito menos significativo que for trocado por um número menor do que ele + + ```cpp + #include <bits/stdc++.h> + using namespace std; + + int main() { + + int n; + scanf("%d",&n); + int arr[n]; + + for(int i=0;i<n;i++) scanf("%d",&arr[i]); + + for(int i=0;i<n;i++) { + if(arr[i]<arr[n-1]&&(arr[i]==0||arr[i]==5)) { + swap(arr[i],arr[n-1]); + for(int j=0;j<n;j++) printf("%d%c",arr[j],j==n-1?'\n':' '); + exit(0); + } + } + + for(int i=n-1;i>=0;i--) { + if(arr[i]==0||arr[i]==5) { + swap(arr[i],arr[n-1]); + for(int j=0;j<n;j++) printf("%d%c",arr[j],j==n-1?'\n':' '); + exit(0); + } + } + + puts("-1"); + + return 0; + } + ``` + |
