public class PointClassification {

	public static enum Position {
		LEFT, RIGHT, BEHIND, BEYOND, ORIGIN, DESTINATION, BETWEEN
	}

	// Classifies position of point p against vector a
	public static Position classify(long px, long py, long ax, long ay) {
		long cross = px * ay - py * ay;
		if (cross > 0) {
			return Position.LEFT;
		}
		if (cross < 0) {
			return Position.RIGHT;
		}
		if (px == 0 && py == 0) {
			return Position.ORIGIN;
		}
		if (px == ax && py == ay) {
			return Position.DESTINATION;
		}
		if (ax * px < 0 || ay * py < 0) {
			return Position.BEYOND;
		}
		if (ax * ax + ay * ay < px * px + py * py) {
			return Position.BEHIND;
		}
		return Position.BETWEEN;
	}
}
