#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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovLyByYW5nZSA6IFttaW4sIG1heF0KaW50IHJhbmRvbShpbnQgbWluLCBpbnQgbWF4KSB7CiAgIHN0YXRpYyBib29sIGZpcnN0ID0gdHJ1ZTsKICAgaWYgKGZpcnN0KSB7ICAKICAgICAgc3JhbmQodGltZShOVUxMKSk7IC8vc2VlZGluZyBmb3IgdGhlIGZpcnN0IHRpbWUgb25seSEKICAgICAgZmlyc3QgPSBmYWxzZTsKICAgfQogICByZXR1cm4gbWluICsgcmFuZCgpICUgKG1heCAtIG1pbiArIDEpOwp9CgpzdGQ6OnBhaXI8aW50LGludD4gcmFuZF9oZWFkaW5nX3BvaW50KGludCBzdGFydF94LCBpbnQgc3RhcnRfeSwgaW50IG1heF94LCBpbnQgbWF4X3ksIGludCBoZWFkaW5nX2RpcikgewogICAgaW50IHR1cm5feCA9IDA7CiAgICBpbnQgdHVybl95ID0gMDsKICAgIAogICAgaWYgKGhlYWRpbmdfZGlyIDw9IDkwKSB7CiAgICAgIHR1cm5feCA9IHJhbmRvbShzdGFydF94LCBtYXhfeCk7CiAgICAgIHR1cm5feSA9IHJhbmRvbShzdGFydF95LCBtYXhfeSk7CiAgICB9IGVsc2UgaWYgKGhlYWRpbmdfZGlyIDw9IDE4MCkgewogICAgICB0dXJuX3ggPSByYW5kb20oMCwgc3RhcnRfeCk7CiAgICAgIHR1cm5feSA9IHJhbmRvbShzdGFydF95LCBtYXhfeSk7CiAgICB9IGVsc2UgaWYgKGhlYWRpbmdfZGlyIDw9IDI3MCkgewogICAgICB0dXJuX3ggPSByYW5kb20oMCwgbWF4X3kpOwogICAgICB0dXJuX3kgPSByYW5kb20oMCwgc3RhcnRfeSk7CiAgICB9IGVsc2UgewogICAgICB0dXJuX3ggPSByYW5kb20oc3RhcnRfeCwgbWF4X3gpOwogICAgICB0dXJuX3kgPSByYW5kb20oMCwgc3RhcnRfeSk7CiAgICB9CiAgICAKICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcih0dXJuX3gsIHR1cm5feSk7Cn0KCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJCglpbnQgc3RhcnRfeCA9IDEwMDsKCWludCBzdGFydF95ID0gMTAwOwoJaW50IHdpZHRoID0gNTAwOwoJaW50IGhlaWdodCA9IDUwMDsKCWludCBkaXIgPSA4MDsKCQoJYXV0byBoZWFkaW5nX3BvaW50ID0gcmFuZF9oZWFkaW5nX3BvaW50KHN0YXJ0X3gsIHN0YXJ0X3ksIHdpZHRoLCBoZWlnaHQsIGRpcik7CgkKCWNvdXQgPDwgIng6ICIgPDwgaGVhZGluZ19wb2ludC5maXJzdCA8PCAiLCB5OiAiIDw8IGhlYWRpbmdfcG9pbnQuc2Vjb25kIDw8IGVuZGw7CgkKCXJldHVybiAwOwp9