Dada una string binaria str que representa los puntajes de un partido de Voleibol. La tarea es encontrar al ganador del partido de acuerdo con las siguientes condiciones:
- En voleibol, los dos equipos juegan entre sí y el equipo que anote primero 15 puntos será el ganador, excepto en el caso en que ambos equipos hayan llegado a 14 puntos.
- En el caso de que ambos equipos hayan alcanzado los 14 puntos, el equipo que mantenga una ventaja de dos puntos será el ganador.
En la string binaria dada, 0 significa que el equipo de GEEK pierde un punto y 1 significa que el equipo de GEEK gana un punto. La tarea es encontrar si el equipo de GEEK ganó o perdió el partido.
Ejemplos:
Entrada: str = “010111111111110110101”
Salida: GEEK’S ganó
Explicación: GEEK gana con una puntuación de 15-5Entrada: str = “010101010101010101010101010100”
Salida: GEEK’s lost
Explicación: El oponente gana con una puntuación de 16-14
Enfoque ingenuo: El enfoque ingenuo se menciona en el Conjunto-1 de este problema.
Enfoque eficiente: no importa cuál sea la línea de tiempo, el jugador que anote el último punto será el ganador. Las siguientes son las razones para ello:
El juego termina cuando alguien gana el set y cumple las condiciones requeridas para ganar el juego.
- Si el juego termina cuando alguien llega primero a los 15 puntos, será uno de los que gane el último set.
- Si el juego lo gana alguien que mantiene una ventaja de dos puntos después de alcanzar el estado 15-14, entonces el ganador también será el que gane el último set manteniendo una ventaja de dos puntos.
A continuación se muestra la implementación del enfoque anterior.
C++
// C++ implementation of the above approach #include <bits/stdc++.h> using namespace std; // Function to find the winner // from given timeline string findTheWinner(string str, int N) { // If last point scored is 1 then // GEEK is winner if (str[N - 1] == '1') { return "GEEK's won"; } // Else GEEK lost return "GEEK's lost"; } // Driver Code int main() { // Input score timeline string str1 = "01011111111110110101"; int N1 = str1.size(); string str2 = "010101010101010101010101010100"; int N2 = str2.size(); // Print the winner cout << findTheWinner(str1, N1) << endl; cout << findTheWinner(str2, N2) << endl; return 0; }
Java
// C# implementation of the above approach class GFG { // Function to find the winner // from given timeline static String findTheWinner(String str, int N) { // If last point scored is 1 then // GEEK is winner if (str.charAt(N - 1) == '1') { return "GEEK's won"; } // Else GEEK lost return "GEEK's lost"; } // Driver Code public static void main(String args[]) { // Input score timeline String str1 = "01011111111110110101"; int N1 = str1.length(); String str2 = "010101010101010101010101010100"; int N2 = str2.length(); // Print the winner System.out.println(findTheWinner(str1, N1)); System.out.println(findTheWinner(str2, N2)); } } // This code is contributed by Saurabh Jaiswal
Python3
# Python code for the above approach # Function to find the winner # from given timeline def findTheWinner(str, N): # If last point scored is 1 then # GEEK is winner if (str[N - 1] == '1'): return "GEEK's won" # Else GEEK lost return "GEEK's lost" # Driver Code # Input score timeline str1 = "01011111111110110101" N1 = len(str1) str2 = "010101010101010101010101010100" N2 = len(str2) # Print the winner print(findTheWinner(str1, N1)) print(findTheWinner(str2, N2)) # This code is contributed by Saurabh Jaiswal
C#
// C# implementation of the above approach using System; class GFG{ // Function to find the winner // from given timeline static string findTheWinner(string str, int N) { // If last point scored is 1 then // GEEK is winner if (str[N - 1] == '1') { return "GEEK's won"; } // Else GEEK lost return "GEEK's lost"; } // Driver Code public static void Main() { // Input score timeline string str1 = "01011111111110110101"; int N1 = str1.Length; string str2 = "010101010101010101010101010100"; int N2 = str2.Length; // Print the winner Console.WriteLine(findTheWinner(str1, N1)); Console.WriteLine(findTheWinner(str2, N2)); } } // This code is contributed by ukasp
Javascript
<script> // JavaScript code for the above approach // Function to find the winner // from given timeline function findTheWinner(str, N) { // If last point scored is 1 then // GEEK is winner if (str[N - 1] == '1') { return "GEEK's won"; } // Else GEEK lost return "GEEK's lost"; } // Driver Code // Input score timeline let str1 = "01011111111110110101"; let N1 = str1.length; let str2 = "010101010101010101010101010100"; let N2 = str2.length; // Print the winner document.write(findTheWinner(str1, N1) + '<br>'); document.write(findTheWinner(str2, N2) + '<br>'); // This code is contributed by Potta Lokesh </script>
GEEK's won GEEK's lost
Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por Shivam.Pradhan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA