Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Collections;
- import java.util.Scanner;
- import static java.lang.System.*;
- import java.io.*;
- public class hoofball {
- public static void main(String[] args)throws IOException{
- Scanner scan = new Scanner(new File("data.dat"));
- scan.nextLine();
- String[] placeHolder = scan.nextLine().split(" ");
- ArrayList<Integer> list = new ArrayList<Integer>();
- ArrayList<Boolean> list2 = new ArrayList<Boolean>();
- ArrayList<Boolean> list3 = new ArrayList<Boolean>();
- int count = 1;
- for(String x: placeHolder)
- list.add(Integer.parseInt(x));
- Collections.sort(list);
- for(int x: list)
- list2.add(false);
- for(int x: list)
- list3.add(false);
- int point = list.size()-1;
- //System.out.println(right(list, list3, count, point));
- //System.out.println(left(list, list2, count, point));
- System.out.println(Math.min(left(list, list2, count, point), right(list, list3, count, point)));
- }
- public static int left(ArrayList<Integer> list, ArrayList<Boolean> list2, int count, int point){
- while(!done(list2)){
- int temp1 = list.get(point);
- int temp2 = list.get(point-1);
- int temp3 = list.get(point-2);
- if((temp1-temp2) > (temp2- temp3)){
- list2.set(point, true);
- list2.set(point-1, true);
- list2.set(point-2, true);
- point--;
- }
- else if((temp1-temp2) < (temp2- temp3)){
- count++;
- list2.set(point, true);
- list2.set(point-1, true);
- list2.set(point-2, true);
- point--;;
- }
- else{
- list2.set(point, true);
- list2.set(point-1, true);
- point = 0;
- list2.set(point, true);
- count += leftRight(list, list2, count, point);
- }
- }
- return count;
- }
- public static int leftRight(ArrayList<Integer> list, ArrayList<Boolean> list2, int count, int point){
- while(!done(list2)){
- int temp1 = list.get(point);
- int temp2 = list.get(point+1);
- int temp3 = list.get(point+2);
- if((temp2-temp1) > (temp3-temp2)){
- list2.set(point, true);
- list2.set(point+1, true);
- list2.set(point+2, true);
- point++;
- }
- else if((temp2-temp1) < (temp3-temp2)){
- count++;
- list2.set(point, true);
- list2.set(point+1, true);
- list2.set(point+2, true);
- point++;
- }
- else{
- list2.set(point, true);
- list2.set(point+1, true);
- point++;
- }
- }
- return count;
- }
- public static int right(ArrayList<Integer> list, ArrayList<Boolean> list3, int count, int point){
- count = 1;
- point = 0;
- while(!done(list3)){
- int temp1 = list.get(point);
- int temp2 = list.get(point+1);
- int temp3 = list.get(point+2);
- if((temp2-temp1) > (temp3-temp2)){
- list3.set(point, true);
- list3.set(point+1, true);
- list3.set(point+2, true);
- point++;
- }
- else if((temp2-temp1) < (temp3-temp2)){
- count++;
- list3.set(point, true);
- list3.set(point+1, true);
- list3.set(point+2, true);
- point++;
- }
- else{
- list3.set(point, true);
- list3.set(point+1, true);
- list3.set(point+3, true);
- point++;
- }
- }
- return count;
- }
- public static boolean done(ArrayList<Boolean> list2)
- {
- for(boolean x: list2)
- if(x == false)
- return false;
- return true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement