diff --git a/Coding Exercise Solutions/Make It Equal.cpp b/Coding Exercise Solutions/Make It Equal.cpp index 2dab7ac..f013ae8 100644 --- a/Coding Exercise Solutions/Make It Equal.cpp +++ b/Coding Exercise Solutions/Make It Equal.cpp @@ -1,30 +1,28 @@ #include using namespace std; -#define maxn 100001 -int solve(int n,int k,vector h){ - int cnt[maxn]={0}; - for(int i=0;i h){ + int maxi = *max_element(h.begin(), h.end()) + 1; + vector cnt(maxi, 0); + for(int i = 0 ; i < n ; i++){ cnt[0]++; cnt[h[i]]--; } - for(int i=1;i=0;i--){ - if(cnt[i]==n){ - ans+=(sum>0); - break; - } - if(sum+ cnt[i]>k) - { - ans++; - sum=cnt[i]; - continue; + + int slices = 0, curr = 0; + for(int i = maxi-1; i >= 0; i--){ + if(cnt[i] == n) break; + if(curr + cnt[i] <= k){ + curr += cnt[i]; + }else{ + slices++; + curr = cnt[i]; } - sum+=cnt[i]; } - return ans; -} \ No newline at end of file + if(curr != 0) slices++; + return slices; +}