Skip to content

Instantly share code, notes, and snippets.

@veigavitor
Created April 23, 2023 20:47
Show Gist options
  • Save veigavitor/32cf827a8d6f1c5ae1168ce9fa5ae949 to your computer and use it in GitHub Desktop.
Save veigavitor/32cf827a8d6f1c5ae1168ce9fa5ae949 to your computer and use it in GitHub Desktop.
#include <bits/stdc++.h>
using namespace std;
int32_t main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
// 'p1' e 'p2' são as posições dos mestres
int p1, p2;
for(int i = 0; i < 16; i++) {
int x;
cin >> x;
if(x == 1) p1 = i;
if(x == 9) p2 = i;
}
// caso a menor das duas posições seja 'p1',
// trocamos as duas para facilitar os cálculos
if(p1 < p2) swap(p1, p2);
// 'l' e 'r' são os limites da busca e 'cnt' o número de cortes que realizamos
int l = 0, r = 15, cnt = 0;
while(l <= r) {
// 'm' é a posição do corte atual
int m = (l + r) / 2;
// achando um corte ideal, paramos a busca
if(p1 > m and p2 <= m) {
break;
}
// se não, aumentamos o 'cnt' e realizamos um novo corte para o lado correto
cnt++;
if(p1 > m) {
l = m + 1;
} else {
r = m - 1;
}
}
// a depender do número de cortes que são feitos, temos a resposta
if(cnt == 0) cout << "final" << endl;
if(cnt == 1) cout << "semifinal" << endl;
if(cnt == 2) cout << "quartas" << endl;
if(cnt == 3) cout << "oitavas" << endl;
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment