ENG  RUSTimus Online Judge
Online Judge
Problems
Authors
Online contests
About Online Judge
Frequently asked questions
Site news
Webboard
Links
Problem set
Submit solution
Judge status
Guide
Register
Update your info
Authors ranklist
Current contest
Scheduled contests
Past contests
Rules
back to board

Discussion of Problem 1005. Stone Pile

Why "Wrong Answer"?
Posted by Konstantin 9 Feb 2017 14:16
import java.util.*;

public class SearchMidDifferenc {
    @SuppressWarnings("empty-statement")
    public static void main(String[] args) {
        int SummArray = 0;
        int i;
        int[] arr;
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        arr = new int[n];
        scanner.nextLine();
        for(i=0;i<n;i++){
            arr[i] = scanner.nextInt();
            scanner.nextLine();
        }
        for(int k:arr){
            SummArray+=k;
        }
        int MinDifferent = BalancedPatrition(arr,SummArray);
    }


    //Search min different
    public static int BalancedPatrition(int[] arr,int SummArray){
        boolean [] sol = new boolean [SummArray / 2 + 1];

        sol [0] = true;
        for (int k : arr)
        {
            for (int j = SummArray / 2; j >= k; j--)
            {
                if (sol [j - k]) sol [j] = true;
            }
        }

        int halfsumcloser = SummArray / 2;
        for (; !sol [halfsumcloser]; halfsumcloser--);
        int MinDifferent = (SummArray - halfsumcloser) - halfsumcloser;
        System.out.println (((SummArray - halfsumcloser) - halfsumcloser));
        return MinDifferent;
    }
}

Edited by author 09.02.2017 14:27
Re: Why "Runtime error"?
Posted by Konstantin 9 Feb 2017 14:59
in IDE all work. Pls help guys.


import java.util.*;

public class SearchMidDifferenc {
    @SuppressWarnings("empty-statement")
    public static void main(String[] args) {
        int SummArray = 0;
        int i;
        int[] arr;
        Scanner scanner = new Scanner(System.in,"ISO-8859-1");
        int n = scanner.nextInt();
        arr = new int[n];
        scanner.nextLine();
        for(i=0;i<n;i++){
            arr[i] = scanner.nextInt();
            scanner.nextLine();
        }
        for(int k:arr){
            SummArray+=k;
        }
        int MinDifferent = BalancedPatrition(arr,SummArray);
    }


    //Search min different
    public static int BalancedPatrition(int[] arr,int SummArray){
        boolean [] sol = new boolean [SummArray / 2 + 1];

        sol [0] = true;
        for (int k : arr)
        {
            for (int j = SummArray / 2; j >= k; j--)
            {
                if (sol [j - k]) sol [j] = true;
            }
        }

        int halfsumcloser = SummArray / 2;
        for (; !sol [halfsumcloser]; halfsumcloser--);
        int MinDifferent = (SummArray - halfsumcloser) - halfsumcloser;
        System.out.println(((SummArray - halfsumcloser) - halfsumcloser));
        return MinDifferent;
    }
}

Edited by author 09.02.2017 15:00