class Solution { public: vector<int> maxSumOfThreeSubarrays(vector<int>& nums, int k) { int n = nums.size(),end,start,gap,max = -1,tmp; vector<int> temp(n,0),dp(temp); vector<int> ret(3,0); for(int i=0;i<n;i++) temp[i] = (i ? temp[i-1]:0) + nums[i]; for(start = 0;start<=n-k;start++) dp[start] = temp[start+k-1] - (start ? temp[start-1] : 0); for(start=0;start<=n-(k<<1)-k;start++) { for(gap=start+k;gap<=n-(k<<1);gap++) { for(end=gap+k;end<=n-k;end++) { tmp = dp[start] + dp[gap] + dp[end]; if(tmp > max) { max = tmp; ret[0] = start,ret[1] = gap,ret[2] = end; } } } } return ret; } };