- #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