Elija puntos de dos rangos de modo que ningún punto se encuentre en ambos rangos

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>
Producción: 

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.

Publicación traducida automáticamente

Artículo escrito por souradeep y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *