CSES - Datatähti 2017 alku - Results
Submission details
Task:Järjestys
Sender:YvMa^Na9
Submission time:2016-10-05 00:43:17 +0300
Language:Java
Status:READY
Result:56
Feedback
groupverdictscore
#1ACCEPTED19
#2ACCEPTED37
#30
Test results
testverdicttimegroup
#1ACCEPTED0.13 s1details
#2ACCEPTED0.28 s2details
#3--3details

Code

import java.util.Scanner;
import java.util.Arrays;
import java.util.ArrayList;
public class jarjestys {

    ArrayList<Integer> turns;
    public static void main (String[] args) {
        Jarjestys();
    }

    public static void Jarjestys() {
        Scanner scanner = new Scanner(System.in);
        //IO io = new IO();
        //int a = io.nextInt();//scanner.nextInt();
        int a = scanner.nextInt();
        int y;
        int[] nums = new int[a];
//        ArrayList<Integer> turns = new ArrayList<Integer>();
        for (int j = 0; j < a; j++) {
//            nums[j] = io.nextInt();//scanner.nextInt();
            nums[j] = scanner.nextInt();
        }
        System.out.println(2*a);
        for (int i = a; i >= 1; i--) {
            nums = findLargest(nums, i);
            /*
            //System.out.println("FL RES: " + findLargest(nums, i));
            y = findLargest(nums, i);
            if (y + 1 != i) {
           //     System.out.println("y: " + y + "preflip1:" + Arrays.toString(nums));
                flip(nums, y);
            //      System.out.println("y: " + y + "afterflip1:" + Arrays.toString(nums));
                turns.add(y+1);
                y = nums.length - a + i - 1;
                flip(nums, y);
         //       System.out.println("x: " + x + "afterflip2" + Arrays.toString(nums));
                turns.add(y+1);
                //System.out.println(Arrays.toString(nums));
                */
        }
       /* 
        //System.out.println(turns.size());
        //io.println(turns.size());
        //System.out.println(Arrays.toString(turns.toArray()));
        for (int i = 0; i < turns.size(); i++) {
            System.out.print(turns.get(i) + " ");
            //io.print(turns.get(i) + " ");
        }
        //io.close();
        //*/

    }
    private static int[] findLargest(int[] array, int toSearch) { //returns indexOf(largest)
        //System.out.println(toSearch);
        int[] temp = new int[toSearch];
        int i = 0;
        int count = 0;
        int count2 = 0;
        for(i = 0; i < toSearch; i++) {
            if (array[i] == toSearch) {
                //print toSeearch loc, i + 1
                int index = i + 1;
                System.out.print(index + " ");
                //print toSearch
                System.out.print(toSearch + " ");
                for (int k = toSearch - 1; k > i; k--) {
                    temp[count] = array[k];
                    count++;
                }
                for (int j = count; j < toSearch - 1; j++) {
                    temp[j] = array[count2];
                    count2++;
                }
                return temp;
            }
        }
        /*
        return -1;
        */
        return new int[1];
    }
    private static void flip(int[] array, int toFlip) {
        //System.out.println(toFlip);
        int[] temp = Arrays.copyOfRange(array, 0, toFlip + 1); //-1??
        //System.out.println("TEMP:" + Arrays.toString(temp));
        for(int i = 0; i <= toFlip; i++) {
            //System.out.println(toFlip-i-1);
            array[toFlip-i] = temp[i];
        }
    }
}

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
10
9 3 4 7 6 5 10 2 8 1

correct output
32
10 10 9 10 9 8 7 9 4 2 1 4 5 2...

user output
20
7 10 4 9 7 8 4 7 6 6 5 5 3 4 3...

Test 2

Group: 2

Verdict: ACCEPTED

input
1000
650 716 982 41 133 1000 876 92...

correct output
3984
207 207 206 207 128 127 126 12...

user output
2000
6 1000 904 999 964 998 333 997...

Test 3

Group: 3

Verdict:

input
100000
94703 47808 62366 31885 7091 8...

correct output
399956
98676 98676 98675 98676 62994 ...

user output
(empty)