Editorial for BSSPC '21 S3 - James's Egirl Discord Status
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Subtask 1
We can simply loop over all subarrays and find the max sum of a subarray with size divisible by . This can be done efficiently with a prefix sum array or sliding window.
Time Complexity:
Subtask 2
This subtask was created to reward unoptimized solutions close to a full solution that ran in .
Subtask 3
We reduce the problem to instances of the classical maximal subarray problem. For each , we will start from element , constructing a new array of size by compressing every subsequent block of elements into a single element with value equal to their sum; this can be done efficiently with a prefix sum array. Each subarray of this compressed array will correspond to a subarray of with size that is a multiple of . Finding the maximal subarray over all compressed arrays, we arrive at our answer.
Time Complexity:
Alternate solution
Another solution involves dynamic programming. We let be the minimum sum of a prefix such that and .
The answer will be
Time Complexity:
Comments