मान लीजिए, हमें दो बिंदु a =(x1, y1) और b =(x2, y2) दिए गए हैं। दो बिंदुओं के बीच मैनहट्टन दूरी है dist(a, b) =|x1 - x2| + |y1 - y2|। यदि बिंदु a का निर्देशांक (0, 0) है और बिंदु b का निर्देशांक (x, y) है, तो हमें ऐसा बिंदु c ज्ञात करना होगा कि dist(a, c) =dist(a, b)/2 और dist( बी, सी) =जिला (ए, बी) / 2। यदि ऐसा कोई बिंदु उपलब्ध नहीं है, तो हम -1, -1 प्रिंट करते हैं।
इसलिए, यदि इनपुट x =13, y =7 जैसा है, तो आउटपुट 6, 4 होगा।
कदम
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
if x mod 2 is same as 0 and y mod 2 is same as 0, then: print( x / 2, y / 2) otherwise when (x + y) mod 2 is same as 1, then: print(- 1, - 1) Otherwise, print(x / 2, (y + 1) / 2)
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h>
using namespace std;
#define N 100
void solve(int x, int y) {
if(x % 2 == 0 && y % 2 == 0)
cout<< x / 2 <<' '<< y / 2 <<endl;
else if((x + y) % 2 == 1)
cout<< -1 <<' '<< -1 <<endl;
else
cout<< x / 2 <<' '<< (y + 1) / 2 << endl;
}
int main() {
int x = 13, y = 7 ;
solve(x, y);
return 0;
} इनपुट
13, 7
आउटपुट
6 4