From 4556e9833d2f698ca2ae666a8be098458cdede94 Mon Sep 17 00:00:00 2001 From: Chitra Singla <45913363+chitrasingla@users.noreply.github.com> Date: Sun, 17 Oct 2021 22:46:35 +0530 Subject: [PATCH] Create merge k sorted arrays --- .../CPP/Heap/Merge_K_sorted_arrays.cpp | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 DataStructure_and_Algorithms/CPP/Heap/Merge_K_sorted_arrays.cpp diff --git a/DataStructure_and_Algorithms/CPP/Heap/Merge_K_sorted_arrays.cpp b/DataStructure_and_Algorithms/CPP/Heap/Merge_K_sorted_arrays.cpp new file mode 100644 index 0000000..fda9301 --- /dev/null +++ b/DataStructure_and_Algorithms/CPP/Heap/Merge_K_sorted_arrays.cpp @@ -0,0 +1,52 @@ +#include +using namespace std; + +typedef pair pi; +typedef pair pv; +#define mk make_pair + +int main() +{ + int n,k; + cin>>k>>n; + vector> a(k); + int b[n*k]={0},l=0; + int c[n]; + + for(int i=0;i>d; + a[i].push_back(d); + } + + priority_queue,greater> pq; + + for(int i=0;i d; + while((pq.top()).second != -1){ + d = pq.top(); + b[l++] = d.first; // smallest element + m = d.second; + pq.pop(); + if(a[m].size()==0) + pq.push(mk(INT_MAX,-1)); + else + { + int e = a[m][0]; + pq.push(mk(e,m)); + a[m].erase(a[m].begin()); + } + } + + for(int i=0;i