मान लीजिए हमारे पास कुछ बिंदु हैं, और एक पूर्णांक k है। हमें उस वृत्त की न्यूनतम त्रिज्या खोजनी है जिसका केंद्र (0, 0) पर है और जो k बिंदुओं को कवर करता है। तो यदि बिंदु (1, 1), (-1, -1), (1, -1) जैसे हैं, और k = 3, तो त्रिज्या 2 होगी।
यहां हम प्रत्येक बिंदु और (0, 0) के बीच यूक्लिडियन दूरी खोजेंगे, फिर दूरियों को सॉर्ट करेंगे और सॉर्टिंग के बाद kवां तत्व वापस करेंगे।
उदाहरण
#include <iostream>
#include <algorithm>
using namespace std;
struct point {
int x, y;
};
int minRadius(int k, point points[], int n) {
int dist[n];
for (int i = 0; i < n; i++)
dist[i] = points[i].x * points[i].x + points[i].y * points[i].y;
// Sorting the distance
sort(dist, dist + n);
return dist[k - 1];
}
int main() {
int k = 3;
point points[] = {{1, 1}, {-1, -1}, {1, -1}};
int n = sizeof(points) / sizeof(points[0]);
cout << "Minimum radius: " << minRadius(k, points, n) << endl;
}
आउटपुट
Minimum radius: 2