Editorial for Maximum Subarray


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.

Python

import sys

input = sys.stdin.readline

n = int(input())
arr = [0] * (n + 1)
maximum = [0] * (n + 1)

totalMax = -float('inf')

for i in range(1, n + 1):
    arr[i] = int(input())
    maximum[i] = max(maximum[i - 1] + arr[i], arr[i])
    totalMax = max(totalMax, maximum[i])

print(totalMax)

Java

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        int[] arr = new int[n + 1];
        int[] maximum = new int[n + 1];

        int totalMax = Integer.MIN_VALUE;

        for (int i = 1; i <= n; i++) {
            arr[i] = sc.nextInt();
            maximum[i] = Math.max(maximum[i - 1] + arr[i], arr[i]);
            totalMax = Math.max(totalMax, maximum[i]);
        }

        System.out.println(totalMax);
    }
}

C++

#include <bits/stdc++.h>
using namespace std;
int n;
int arr[100005];
int maximum[100005];

signed main() {
    cin.sync_with_stdio(0);
    cin.tie(0);
    cin >> n;
    int totalMax = INT_MIN;

    for (int i = 1; i <= n; i++) {
        cin >> arr[i];
        maximum[i] = max(maximum[i - 1] + arr[i], arr[i]);
        totalMax = max(totalMax, maximum[i]);
    }
    cout << totalMax << endl;
}

Comments

There are no comments at the moment.