Skip to content

Commit fce7d2f

Browse files
committed
Time: 6 ms (92.97%), Space: 31.2 MB (98.08%) - LeetHub
1 parent 71d19bb commit fce7d2f

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
class Solution {
2+
public:
3+
using int2=pair<int, int>;
4+
static int x_sum( const auto& freq, int k, int x){
5+
auto freq2=freq;
6+
sort(freq2.begin(), freq2.end(), greater<int2>());
7+
int sum=0;
8+
for (int i=0; i<x; i++){
9+
auto [f, num]=freq2[i];
10+
if (f==0) break;
11+
sum+=num*f;
12+
}
13+
return sum;
14+
}
15+
static vector<int> findXSum(vector<int>& nums, int k, int x) {
16+
const int n=nums.size(), sz=n-k+1;
17+
vector<int> ans(sz);
18+
array<int2, 51> freq;
19+
freq.fill({0, 0});
20+
for(int r=0; r<k; r++){
21+
int z=nums[r];
22+
freq[z].second=z;
23+
freq[z].first++;
24+
}
25+
ans[0]=x_sum(freq, k, x);
26+
for(int l=1, r=k; l<sz; l++, r++){
27+
int L=nums[l-1], R=nums[r];
28+
freq[L].first--;
29+
freq[R].first++;
30+
freq[R].second = R;
31+
ans[l]=x_sum(freq, k, x);
32+
}
33+
return ans;
34+
}
35+
};
36+
37+
38+
auto init = []() {
39+
ios::sync_with_stdio(0);
40+
cin.tie(0);
41+
cout.tie(0);
42+
return 'c';
43+
}();

0 commit comments

Comments
 (0)