Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class I5 {
- static int[] arr;
- static int N;
- static void read(){
- Scanner sc = new Scanner(System.in);
- N = 0;
- arr = new int[100];
- while(sc.hasNextInt()){
- arr[N]=sc.nextInt();
- N++;
- }
- int max_sum = solver(arr, 0, N-1);
- sc.close();
- }
- static void print(int arr[],int l,int h,int res){
- System.out.print("[");
- for(int i=l;i<=h;i++){
- System.out.print(arr[i]);
- if(i+1<=h) System.out.print(", ");
- }
- System.out.println("]: "+res);
- }
- static int conquer(int a[],int l, int r){
- int max = Integer.MIN_VALUE, maxPrev = 0;
- for (int i = l; i <= r; i++){
- maxPrev = maxPrev + a[i];
- if (max < maxPrev)
- max = maxPrev;
- if (maxPrev < 0)
- maxPrev = 0;
- }
- print(arr,l,r,max);
- return max;
- }
- static int solver(int arr[], int l, int h){
- if (l == h){
- print(arr,l,h,arr[l]);
- return arr[l];
- }
- int m = (l + h)/2;
- return Math.max(Math.max(solver(arr, l, m), solver(arr, m+1, h)), conquer(arr, l, h));
- }
- public static void main(String[] args){
- read();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement