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.
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