给定两个段[L1,R1]和[L2,R2] ,任务是从两个范围中选择两个元素x和y (一个来自范围1,另一个来自范围2),使得没有元素同时属于两个范围,即x属于第一范围, y属于第二范围。如果不存在这样的元素,则打印-1 。
例子:
Input: L1 = 1, R1 = 6, L2 = 3, R2 = 11
Output: 1 11
1 lies only in range [1, 6] and 11 lies only in [3, 11]
Input: L1 = 5, R1 = 10, L2 = 1, R2 = 7
Output: 1 10
方法:
- 如果L1!= L2和R1!= R2,则这些点将是min(L1,L2)和max(R1,R2) 。
- 否则只能从一个范围中选择一个点,因为该范围之一完全在另一个范围内,因此我们为该点打印-1 。
下面是上述方法的实现:
C++
// C++ implementation of the approach
#include
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
Javascript
输出:
1 10