Dados dos segmentos [L1, R1] y [L2, R2] , la tarea es elegir dos elementos x e y de ambos rangos (uno del rango uno y otro del rango dos) de modo que ningún elemento pertenezca a ambos rangos, es decir x pertenece al primer rango e y pertenece al segundo rango. Si no existe tal elemento, imprima -1 en su lugar.
Ejemplos:
Entrada: L1 = 1, R1 = 6, L2 = 3, R2 = 11
Salida: 1 11
1 se encuentra solo en el rango [1, 6] y 11 se encuentra solo en [3, 11]Entrada: L1 = 5, R1 = 10, L2 = 1, R2 = 7
Salida: 1 10
Acercarse:
- Si L1 != L2 y R1 != R2 entonces los puntos serán min(L1, L2) y max(R1, R2) .
- De lo contrario, solo se puede elegir un punto de uno de los rangos, ya que uno de los rangos está completamente dentro del otro, por lo que imprimimos -1 para ese punto.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // Function to find the required points void findPoints(int l1, int r1, int l2, int r2) { int x = (l1 != l2) ? min(l1, l2) : -1; int y = (r1 != r2) ? max(r1, r2) : -1; cout << x << " " << y; } // Driver code int main() { int l1 = 5, r1 = 10, l2 = 1, r2 = 7; findPoints(l1, r1, l2, r2); }
Java
// Java implementation of the approach class GFG { // Function to find the required points static void findPoints(int l1, int r1, int l2, int r2) { int x = (l1 != l2) ? Math.min(l1, l2) : -1; int y = (r1 != r2) ? Math.max(r1, r2) : -1; System.out.println(x + " " + y); } // Driver code public static void main(String[] args) { int l1 = 5, r1 = 10, l2 = 1, r2 = 7; findPoints(l1, r1, l2, r2); } } // This code is contributed by Code_Mech
Python3
# Python3 implementation of the approach # Function to find the required points def findPoints(l1, r1, l2, r2): x = min(l1, l2) if(l1 != l2) else -1 y = max(r1, r2) if(r1 != r2) else -1 print(x, y) # Driver code if __name__ == "__main__": l1 = 5 r1 = 10 l2 = 1 r2 = 7 findPoints(l1, r1, l2, r2) # This code is contributed by ita_c
C#
// C# implementation of the approach using System; class GFG { // Function to find the required points static void findPoints(int l1, int r1, int l2, int r2) { int x = (l1 != l2) ? Math.Min(l1, l2) : -1; int y = (r1 != r2) ? Math.Max(r1, r2) : -1; Console.WriteLine(x + " " + y); } // Driver code public static void Main() { int l1 = 5, r1 = 10, l2 = 1, r2 = 7; findPoints(l1, r1, l2, r2); } } // This code is contributed by Ryuga
PHP
<?php // PHP implementation of the approach // Function to find the required points function findPoints($l1, $r1, $l2, $r2) { $x = ($l1 != $l2) ? min($l1, $l2) : -1; $y = ($r1 != $r2) ? max($r1, $r2) : -1; echo $x , " " , $y; } // Driver code $l1 = 5; $r1 = 10; $l2 = 1; $r2 = 7; findPoints($l1, $r1, $l2, $r2); // This code is contributed by ajit ?>
Javascript
<script> // Javascript implementation of the approach // Function to find the required points function findPoints(l1 , r1 , l2 , r2) { var x = (l1 != l2) ? Math.min(l1, l2) : -1; var y = (r1 != r2) ? Math.max(r1, r2) : -1; document.write(x + " " + y); } // Driver code var l1 = 5, r1 = 10, l2 = 1, r2 = 7; findPoints(l1, r1, l2, r2); // This code is contributed by Rajput-Ji </script>
1 10
Complejidad de Tiempo: O(1), ya que solo hay una operación aritmética básica que toma tiempo constante.
Espacio Auxiliar: O(1), ya que no se ha tomado ningún espacio extra.