আমাদের ২-ডি স্পেসে N সংখ্যক পয়েন্ট দেওয়া আছে। লক্ষ্য হল ইনপুট থেকে পয়েন্টের ট্রিপলেটের সংখ্যা বের করা যাতে একটি পয়েন্ট অন্য দুটির মধ্যরেখা বিন্দু হয়ে থাকে। অর্থাৎ যদি ট্রিপলেট হয় (A,B,C) তবে B হল A এবং C-এর মধ্যরেখা বিন্দু (অথবা A,B,C-এর যেকোনো অন্যান্য ক Vereinigung)।
- সকল পয়েন্টকে
জোড়া হিসেবে ভেক্টরে সংরক্ষণ করা হয়। - তারপর ভেক্টরের সকল জোড়াকে একটি সেটে যোগ করা হয়।
- সেট থেকে দুটি পয়েন্ট নিয়ে তাদের x এবং y কোঅর্ডিনেটের যোগফল ২ দিয়ে ভাগ করা হলে آیا সেই ফলাফল সেটে আছে কিনা তা পরীক্ষা করা হয়। থাকলে ট্রিপলেটের কাউন্ট বাড়ানো হয়।
ইনপুট:
{ 1,2 }, { 4,2} , { 2,1 } , { 7,2 } N=4 জোড়া
আউটপুট:
শর্ত পূরণকারী ট্রিপলেট জোড়ার সংখ্যা: 1
ব্যাখ্যা:
এখানে {4,2} হল {1,2} এবং {7,2}-এর মধ্যরেখা বিন্দু। মাত্র ১টি এ derart ট্রিপলেট রয়েছে।
টাইপের জোড়ার একটি ভেক্টর নেওয়া হয়। - প্রতিটি জোড়ায় (x,y) কোঅর্ডিনেট থাকে।
mid_point(vectorফাংশন ভেক্টর ও এর আকার নিয়ে শর্ত পূরণকারী ট্রিপলেটের সংখ্যা রিটার্ন করে।> vec, int size) - প্রাথমিকভাবে count = 0 রাখা হয়।
- ভেক্টরের সকল জোড়াকে
setএ ইনসার্ট করা হয়। এতে অনন্য পয়েন্টগুলো থাকে।> - দুটি নেস্টেড ফর লুপ দিয়ে ভেক্টর ট্রাভার্স করা হয়।
- দুটি পয়েন্টের x কোঅর্ডিনেটের যোগফল
point_A-তে এবং y কোঅর্ডিনেটের যোগফলpoint_B-তে রাখা হয়। - যদি point_A এবং point_B উভয়ই সম সংখ্যা হয়, তবে মধ্যরেখা বিন্দুর শর্ত পরীক্ষা করা হয়।
- যদি
(point_A/2, point_B/2)জোড়াটি সেটে থাকে, তবে count বাড়ানো হয়। - শেষে count রিটার্ন করা হয়।
#includeusing namespace std; int mid_point(vector > vec, int size){ int count = 0; set > sets; for (int i = 0; i < size; i++){ sets.insert(vec[i]); } for (int i = 0; i < size; i++){ for (int j = i + 1; j < size; j++){ int point_A = vec[i].first + vec[j].first; int point_B = vec[i].second + vec[j].second; if (point_A % 2 == 0 && point_B % 2 == 0){ if (sets.find(make_pair(point_A / 2, point_B / 2)) != sets.end()){ count++; } } } } return count; } int main(){ vector > vec = { { 9, 2 }, { 5, 2 }, { 1, 2 } }; int size = vec.size(); cout << "শর্ত পূরণকারী ট্রিপলেট জোড়ার সংখ্যা: " << mid_point(vec, size); return 0; }
উপরোক্ত কোড রান করলে নিচের আউটপুট मिलবে:
শর্ত পূরণকারী ট্রিপলেট জোড়ার সংখ্যা: 1