CSES · 1085

Array Division

This C++ solution uses simulation for CSES 1085 Array Division. Read the reasoning, inspect the code, or try your own test case below.

1085Arrays & prefix sumsSimulationC++35 lines
Solution197of 248
Open official problem ↗ Download C++ file ↓ Search the library → Open full Code Lab ↗ Report an issue ↗

Approach

Simulation

The local label differs, but the official Array Division input, output, and minimize-the-largest-subarray-sum algorithm match exactly.

Arrays & prefix sums

Problem and code

Useful links.

Written by benbenyaojifen. Try the problem first, then compare your approach with the code.

Open official problem ↗View exact source file ↗
Implementation

splitting_a_sequnce.cpp

C++

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int MM = 1e5 + 5;
    int n, m, a[MM];
    bool check(ll lmt){
        ll sum = 0; int cnt = 1;
        for(int i = 1; i <= n; i++){
            if(sum + a[i] > lmt){
                sum = a[i]; cnt++;
            } else {
                sum += a[i];
            }
        }
        return cnt <= m;
    }
    int main(){
        ios::sync_with_stdio(0); cin.tie(0);
        cin >> n >> m;
        ll lo = 0, hi = 0, ans = 0;
        for(int i = 1; i <= n; i++){
            cin >> a[i]; lo = max((ll)a[i], lo); hi += a[i];
        }
        while(lo <= hi){
            ll mid = (lo + hi) / 2;
            if(check(mid)){
                ans = mid;
                hi = mid - 1;
            } else {
                lo = mid + 1;
            }
        }
        cout << ans << '\n';
        return 0;
    }
        

Did this explanation save you time? I'm a Grade 11 student building this free library to make difficult algorithms easier to understand.

Buy me a coffee ↗Keep studying →

Test this problem

Run your code here.

Paste your code, run a test case, compare the output, or trace selected values.

Full trace, comparison & stress testing ↗
StatusReady
Output
No run yet.
Diagnostics
No diagnostics yet.

Each run is isolated and has strict limits. Passing one test does not guarantee the judge will accept the solution.