मान लीजिए कि हमारे पास (xi, yi) रूप में N निर्देशांक P की एक सूची है। x और y मान प्रथम N प्राकृत संख्याओं का क्रमपरिवर्तन हैं। 1 से N की श्रेणी में प्रत्येक k के लिए। हम शहर k पर हैं। हम कई बार मनमाने ढंग से संचालन लागू कर सकते हैं। ऑपरेशन:हम दूसरे शहर में जाते हैं जिसमें एक छोटा x-निर्देशांक होता है और एक छोटा y-निर्देशांक या बड़ा x या बड़ा y उस शहर से बड़ा होता है, जिसमें हम वर्तमान में हैं। हमें उन शहरों की संख्या ज्ञात करनी है, जिन तक हम शहर k से पहुंच सकते हैं। ।
इसलिए, यदि इनपुट P =[[1, 4], [2, 3], [3, 1], [4, 2]] जैसा है, तो आउटपुट [1, 1, 2, 2]<होगा। /पी>
कदम
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
n := size of P
Define one 2D array lst
for initialize i := 0, when i < n, update (increase i by 1), do:
v := { P[i, 0], P[i, 1], i }
insert v at the end of lst
sort the array lst
y_min := 1e9
Define one set se
Define an array ans of size n and fill with 0
for initialize i := 0, when i < n, update (increase i by 1), do:
y_min := minimum of y_min and lst[i, 1]
insert lst[i, 2] into se
if y_min + i is same as n, then:
for each element j in se
ans[j] := size of se
clear the set se
if i is same as n - 1, then:
for each element j in se
ans[j] := size of se
for initialize i := 0, when i < n, update (increase i by 1), do:
display ans[i] उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h>
using namespace std;
void solve(vector<vector<int>> P){
int n = P.size();
vector<vector<int>> lst;
for (int i = 0; i < n; i++){
vector<int> v = { P[i][0], P[i][1], i };
lst.push_back(v);
}
sort(lst.begin(), lst.end());
int y_min = 1e9;
set<int> se;
vector<int> ans(n, 0);
for (int i = 0; i < n; i++){
y_min = min(y_min, lst[i][1]);
se.insert(lst[i][2]);
if (y_min + i == n){
for (auto j : se)
ans[j] = se.size();
se.clear();
}
if (i == n - 1){
for (auto j : se)
ans[j] = se.size();
}
}
for (int i = 0; i < n; i++){
cout << ans[i] << ", ";
}
}
int main(){
vector<vector<int>> P = { { 1, 4 }, { 2, 3 }, { 3, 1 }, { 4, 2 } };
solve(P);
} इनपुट
{ { 1, 4 }, { 2, 3 }, { 3, 1 }, { 4, 2 } } आउटपुट
1, 1, 2, 2,