Untitled
class Solution { public: int minWastedSpace(vector<int>& p, vector<vector<int>>& b) { int n = p.size(); int m = b.size(); sort(p.begin(),p.end()); vector <long long> prefix(n+1,0); for(int i=1;i<=n;i++){ prefix[i]=prefix[i-1]+p[i-1]; } long long ans = 1e9; for(int i=0;i<m;i++){ sort(b[i].begin(),b[i].end()); cout << "i " << i << endl; long long temp = 0; int last = 0; for(int j=0;j<b[i].size();j++){ cout << "j " << j << endl; int l = last; int r = n-1; int index = -1; long long box = b[i][j]; cout << "box " << box << endl; while(l<=r){ int mid = l + (r-l)/2; if(p[mid] <= box){ index = mid; l = mid + 1; } else{ r = mid -1; } } cout << "index " << index << endl; l = last; if(index!=-1){ last = r+1; long long mod = 1e9+7; long long sum = prefix[index+1]-prefix[l]; long long box_sum = box * (index - l+1); cout << "sum " << sum << " box_sum " << box_sum << endl; temp += (box_sum - sum)%(mod); } cout << "last " << last << endl; if(last==n){ break; } } cout << "temp " << temp << endl; cout << endl; long long mod = 1e9+7; if(last==n){ ans = min(ans,temp%(mod)); } } if(ans==1e9){ return -1; } return (int)ans; } };
Leave a Comment