#include <iostream>
#include <cmath>
using namespace std;

// range : [min, max]
int random(int min, int max) {
   static bool first = true;
   if (first) {  
      srand(time(NULL)); //seeding for the first time only!
      first = false;
   }
   return min + rand() % (max - min + 1);
}

std::pair<int,int> rand_heading_point(int start_x, int start_y, int max_x, int max_y, int heading_dir) {
    int turn_x = 0;
    int turn_y = 0;
    
    if (heading_dir <= 90) {
      turn_x = random(start_x, max_x);
      turn_y = random(start_y, max_y);
    } else if (heading_dir <= 180) {
      turn_x = random(0, start_x);
      turn_y = random(start_y, max_y);
    } else if (heading_dir <= 270) {
      turn_x = random(0, max_y);
      turn_y = random(0, start_y);
    } else {
      turn_x = random(start_x, max_x);
      turn_y = random(0, start_y);
    }
    
    return std::make_pair(turn_x, turn_y);
}

int main() {
	// your code goes here
	
	int start_x = 100;
	int start_y = 100;
	int width = 500;
	int height = 500;
	int dir = 80;
	
	auto heading_point = rand_heading_point(start_x, start_y, width, height, dir);
	
	cout << "x: " << heading_point.first << ", y: " << heading_point.second << endl;
	
	return 0;
}