Problem:
Score : 400 points

Problem Statement

Give a pair of integers (A, B) such that A^5-B^5 = X.
It is guaranteed that there exists such a pair for the given integer X.

Constraints

1 \leq X \leq 10^9

X is an integer.

There exists a pair of integers (A, B) satisfying the condition in Problem Statement.

Input

Input is given from Standard Input in the following format:

X

Output

Print A and B, with space in between.
If there are multiple pairs of integers (A, B) satisfying the condition, you may print any of them.

A B

Sample Input 1

33

Sample Output 1

2 -1

For A=2 and B=-1, A^5-B^5 = 33.

Sample Input 2

1

Sample Output 2

0 -1

Solution in Java (OpenJDK 11.0.6) (judge verdict: Wrong Answer)

import java.util.ArrayList;
import java.util.Scanner;
import java.lang.Math;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		long X = in.nextLong();
		int rootX = (int) Math.pow(X,1.0/5) + 1;
		ArrayList<Integer> possibleValues = new ArrayList<Integer>();
		boolean flag = false;
		
		for (int i=rootX; i>0; i--) {
			possibleValues.add(-i);
		}
		
		possibleValues.add(0);
		
		for (int i=1; i<=rootX; i++) {
			possibleValues.add(i);
		}
		
		//
		//[-2, -1, 0, 1, 2]
		if (X>=0) {
			int startIndex = possibleValues.size()-1;
			
			if (Math.pow(possibleValues.get(startIndex), 5) == X) {
				System.out.println(possibleValues.get(startIndex) + " " + "0");
			} else {
				int finalIndex = 0;
				while (startIndex > possibleValues.size()/2 && !flag) {
					while(finalIndex < possibleValues.size()) {
						if (Math.pow(possibleValues.get(startIndex), 5) - Math.pow(possibleValues.get(finalIndex), 5) == X) {
							System.out.println(possibleValues.get(startIndex) + " " + possibleValues.get(finalIndex));
							flag = true;
						}
						finalIndex++;
					}
					finalIndex = 0;
					startIndex--;
				}
			}

		} else {
			int startIndex = 0;
			
			if (Math.pow(possibleValues.get(startIndex), 5) == X) {
				System.out.println(possibleValues.get(startIndex) + " " + "0");
			} else {
				int finalIndex = 0;
				while (startIndex < possibleValues.size()/2 && !flag) {
					while(finalIndex < possibleValues.size()) {
						if (Math.pow(possibleValues.get(startIndex), 5) - Math.pow(possibleValues.get(finalIndex), 5) == X) {
							System.out.println(possibleValues.get(startIndex) + " " + possibleValues.get(finalIndex));
							flag = true;
						}
						finalIndex++;
					}
					finalIndex = 0;
					startIndex++;
				}
			}
		}
		
		
	}
	
	
	
}