Untitled
unknown
plain_text
10 months ago
2.0 kB
6
Indexable
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;
}
};Editor is loading...
Leave a Comment