summaryrefslogtreecommitdiff
path: root/trees/blog/obi2018-cinco.typ
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-03-26 16:23:24 -0300
committerGabriel Schneider <[email protected]>2026-03-27 13:48:42 -0300
commit7c32657002fca2c7e2195d789b1b11e3071d79a2 (patch)
tree6ee80577abce9f16251b3b8c642ae290ad8084b7 /trees/blog/obi2018-cinco.typ
parentc5388feaf9a3bc57070af7c75d03c88bc4fbda4a (diff)
download0x4200.cafe-7c32657002fca2c7e2195d789b1b11e3071d79a2.tar.gz
0x4200.cafe-7c32657002fca2c7e2195d789b1b11e3071d79a2.zip
Squashed older blog files
Diffstat (limited to 'trees/blog/obi2018-cinco.typ')
-rw-r--r--trees/blog/obi2018-cinco.typ46
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;
+ }
+ ```
+