সমস্যা বিবরণ
অ্যারে arr[] (সাইজ n), del[] (সাইজ m), এবং k দেওয়া আছে। del[]-এর উপাদানগুলো arr[]-এ থেকে ডিলিট করে (প্রথম অকারেন্স) বাকি অ্যারেতে kটি সবচেয়ে ছোট উপাদান বের করা।
উদাহরণ
ইনপুট: arr[]={3,5,1,7,9,2}, del[]={1,9,3}, k=2
আউটপুট: 2, 5
ব্যাখ্যা: ডিলিট পর: {5,7,2}, সর্টেড: {2,5,7}, প্রথম ২টি: 2,5।
পদ্ধতি ১: ব্রুট ফোর্স + সর্ট (O(n×m + n log n))
del[]-এর উপাদান খুঁজে INT_MAX মার্ক করে সর্ট করে প্রথম kটি নেওয়া।
পদ্ধতি ২: হ্যাশ ম্যাপ + মিন-হিপ (O(n+m + k log n)) - সেরা
del[] হ্যাশে রেখে arr[]-এর অবশিষ্ট উপাদান মিন-হিপে ঢুকিয়ে kবার পপ করা।
#include <bits/stdc++.h>
using namespace std;
void findKMinAfterDel(int arr[],int n,int del[],int m,int k){
unordered_map<int,int> mp;
for(int i=0;i
আউটপুট
2 5