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