ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1005. Куча камней

Why "Wrong Answer"?
Послано Konstantin 9 фев 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"?
Послано Konstantin 9 фев 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