Challenge: Most Distant
Subdomeniu: Fundamentals (fundamentals)
Scor cont: 30.0 / 30
Submission status: Accepted
Submission score: 1.0
Submission ID: 464726522
Limbaj: cpp14
Link challenge: https://www.hackerrank.com/challenges/most-distant/problem
Cerinta
Keko has $N$ dots in a 2-D coordinate plane. He wants to measure the gap between the most distant two dots. To make the problem easier, Keko decided to change each dot's $x$ *or* $y$ coordinate to zero.
Help Keko calculate the distance!
Input Format
The first line contains an integer, $N$, the number of dots.
The next $N$ lines each contain the integer coordinates of the dots in $(x, y)$ fashion.
**Constraints**
$2\leq N \leq 10^6$
$-10^9\leq x_i,\,y_i \leq 10^9$
It is guaranteed that all dots are distinct, and either their $x$ or $y$ coordinate is equal to $0$.
Output Format
Print the distance between the most distant dots with an absolute error of, at most, $10^{-6}$.
Cod sursa
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
double mnx,mxx,mny,mxy; //min_x_axis max_x_axis min_y_axis max_y_axis
int t;
cin>>t;
while(t--)
{
double a,b;
cin>>a>>b;
if(a==0)
{
mny=min(mny,b);
mxy=max(mxy,b);
}
else
{
mnx=min(mnx,a);
mxx=max(mxx,a);
}
}
double mx=max(abs(mxx-mnx),abs(mny-mxy));//axis
double q1=sqrt(mxx*mxx+mxy*mxy); //quadrant 1
double q2=sqrt(mnx*mnx+mxy*mxy); //2
double q3=sqrt(mnx*mnx+mny*mny); //3
double q4=sqrt(mxx*mxx+mny*mny); //4
printf("%.10f",max(mx,max(q1,max(q2,max(q3,q4)))));
return 0;
}
HackerRank Fundamentals – Most Distant
