Given an unsorted array A and a number k, find the maximum sum sub string in the array such that its sum is divisible by k.
eg. k=3 arr[1,2,3,-3,-4,1,0,-2,5,4,5]
ans=12 sum from [-2,5,4,5]
| # | User | Rating |
|---|---|---|
| 1 | Benq | 3676 |
| 2 | Kevin114514 | 3659 |
| 3 | jiangly | 3640 |
| 4 | turmax | 3450 |
| 5 | tourist | 3408 |
| 6 | strapple | 3360 |
| 7 | Um_nik | 3354 |
| 8 | squareOf105 | 3348 |
| 9 | maroonrk | 3312 |
| 10 | idontwannadothis…e | 3191 |
| # | User | Contrib. |
|---|---|---|
| 1 | Qingyu | 155 |
| 2 | nik_exists | 151 |
| 3 | maspy | 149 |
| 4 | AmShZ | 145 |
| 5 | Um_nik | 143 |
| 6 | Errichto | 139 |
| 7 | BledDest | 136 |
| 8 | adamant | 135 |
| 9 | maroonrk | 132 |
| 10 | cry | 130 |
Given an unsorted array A and a number k, find the maximum sum sub string in the array such that its sum is divisible by k.
eg. k=3 arr[1,2,3,-3,-4,1,0,-2,5,4,5]
ans=12 sum from [-2,5,4,5]
| Name |
|---|



Uhm... What about restrictions? What is the maximum size of A, what is the maximum value of k? Maybe you have a link?
maximum size of array 10**3 k<10**2..I got this problem in the interview
Well. If array size is not greater than 1e3 and the time restriction is >1 second(like in the most CF problems), than you can just go for a brute solution:
Assymptotics:O(n * (n + 1) / 2)
P.S. You can also use prefix solution.
you can actually get O(n*k) if you use dp and store the maximum sub segment modulo k.
can you tell your approach?
just gonna write the main dp part
PS: u only actually need 2*k memory, though I am lazy.
You can actually get O(n) if you store minimum subsegment modulo k.
We want (sum[r] — sum[l — 1]) % k == 0. That also means that sum[r] % k == sum[l — 1] % k. You just need to remember the minimum sum[x < r] such that it has the same remainder when you divide by k to get the maximum answer. So just pass through the array and see if you have a new answer + update the position sum[x] % k if you need to.
Edit: this is the O(nlogn) code that works for any k (considering things don't overflow)
you are right! The constraints on k made me look for complexity in terms of k..
though I think I see 2 errors:
1)it should be max right(for the ans part)? since he is looking for the maximum sum.
2) you should print ans instead of sum?
Yes you are right my mistake ^^