CSES - Datatähti 2017 alku - Results
Submission details
Task:Järjestys
Sender:YvMa^Na9
Submission time:2016-10-04 22:05:41 +0300
Language:Java
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#10.10 s1details
#20.13 s2details
#3--3details

Code

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

    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 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();
        }
        for (int i = a; i > 1; 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) + " ");
        }

    }
    private static int findLargest(int[] array, int toSearch) { //returns indexOf(largest)
        for(int i = 0; i < toSearch; i++) {
            if (array[i] == toSearch) {
                return i;
            }
        }
        return -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:

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
(empty)

Test 2

Group: 2

Verdict:

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

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

user output
(empty)

Test 3

Group: 3

Verdict:

input
100000
94703 47808 62366 31885 7091 8...

correct output
399956
98676 98676 98675 98676 62994 ...

user output
(empty)