Who's Opposite?
Explicación
Como el número de personas a la izquierda de y el número de personas a la derecha de deben ser iguales, podemos hallar el número total de personas en el círculo con .
A partir de aquí, podemos ver si este círculo es posible con ,
Si alguno de estos supera el número de personas en el círculo, no pueden tener pareja.
En caso contrario, podemos restar o sumar a para hallar la respuesta.
Implementación
Complejidad temporal:
#include <iostream>
using namespace std;
int solve(long long a, long long b, long long c) {
long long numGroup = abs(a - b) * 2;
if (a > numGroup || b > numGroup || c > numGroup) {
return -1;
} else {
long long ans = c + abs(a - b);
/*
* Si la respuesta es mayor que el número
* de personas en el grupo, entonces debemos
* restar el número de personas entre a y b
* para hallar la respuesta (ya que esto forma un círculo).
*/
if (ans > numGroup) ans -= (abs(a - b) * 2);
return ans;
}
}
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
long long a, b, c;
cin >> a >> b >> c;
cout << solve(a, b, c) << endl;
}
}import java.io.*;
import java.util.*;
public class WhosOpposite {
static long solve(long a, long b, long c) {
long numGroup = Math.abs(a - b) * 2;
if (a > numGroup || b > numGroup || c > numGroup) {
return -1;
} else {
long ans = c + Math.abs(a - b);
/*
* Si la respuesta es mayor que el número
* de personas en el grupo, entonces debemos
* restar el número de personas entre a y b
* para hallar la respuesta (ya que esto forma un círculo).
*/
if (ans > numGroup) ans -= (Math.abs(a - b) * 2);
return ans;
}
}
public static void main(String[] args) {
Kattio io = new Kattio();
int n = io.nextInt();
for (int i = 0; i < n; i++) {
long a = io.nextInt();
long b = io.nextInt();
long c = io.nextInt();
io.println(solve(a, b, c));
}
io.close();
}
// CodeSnip{Kattio}
}def solve(a, b, c):
num_group = abs(a - b) * 2
if a > num_group or b > num_group or c > num_group:
return -1
else:
ans = c + abs(a - b)
"""
Si la respuesta es mayor que el número
de personas en el grupo, entonces debemos
restar el número de personas entre a y b
para hallar la respuesta (ya que esto forma un círculo).
"""
if ans > num_group:
ans -= abs(a - b) * 2
return ans
n = int(input())
for _ in range(n):
a, b, c = map(int, input().split())
print(solve(a, b, c))