μ΄μ λΆλΆμμ΄ κ΅¬νλ λ¬Έμ λ ν΄λ΅μ΄ μ λμ€λ κ² κ°λ€.
μ΄ λ¬Έμ λ, λμ ν©μ΄ -κ°μ΄ λμ§ μλν κ²μν΄μ λν΄μ dpκ°μ μ μ₯νκ³ , μμκ° λλ©΄ μ΄λ€μλ₯Ό λν΄λ, μλνλκ² μ΄μ΅μΈ μν©μ΄ λκΈ° λλ¬Έμ, λμ ν©μ΄ μμκ° λλ ν΄λΉ μΈλ±μ€μ dpκ°μ 0μΌλ‘ μ λ ₯μν€κ²λ ꡬννμλ€.
μμ λ¬Έμ λ₯Ό ν΅ν΄ μ΄ν΄λ³΄λλ‘ νμ.
μ΅μ’ dpλ°°μ΄μ μμ κ°μ΄ μμ±λκ³ , dpλ°°μ΄μμ κ°μ₯ ν° μμλ₯Ό μΆμΆνλ©΄ λλλ€!
κ·Έλ¦¬κ³ λͺ¨λ μμκ° 0λ³΄λ€ μμ κ²½μ°, λμ ν©μ μ΅λκ°μ μλ λ°°μ΄μ μμ μμλ€ μ€ κ°μ₯ ν°κ°μ΄ λλ€.
μ΄ λΆλΆμ μ μνλ©΄ λλ€.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.valueOf(br.readLine());
long[] dp = new long[N + 1];
long[] array = new long[N + 1];
String[] input = br.readLine().split(" ");
for (int i = 1; i <= N; i++) {
array[i] = Integer.valueOf(input[i - 1]);
}
dp[1] = array[1];
for (int i = 1; i <= N; i++) {
dp[i] = array[i] + dp[i - 1];
if (dp[i] < 0) {
dp[i] = 0;
}
}
Arrays.sort(dp);
Arrays.sort(array);
// System.out.println(Arrays.toString(dp));
// System.out.println(Arrays.toString(array));
if (dp[N] == 0) {
System.out.println(array[N - 1]);
} else
System.out.println(dp[N]);
}
}