CSES - Datatähti 2017 alku - Results
Submission details
Task:Järjestys
Sender:lumieer
Submission time:2016-10-12 16:59:57 +0300
Language:Java
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#10.12 s1details
#20.20 s2details
#3--3details

Code

//package jarjestys;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class Jarjestys {

    
    public static void main(String[] args) {
        final Scanner lukija = new Scanner(System.in);

        int taulKoko = Integer.parseInt(lukija.nextLine());
        
        Integer[] taulukko;
        taulukko = new Integer[taulKoko];
        
        String luvut = lukija.nextLine();
        
        String luvunSailytys = "";
        
        int kaydytLuvut = 0;
        for (int i = 0; i < luvut.length(); i++) {
            if (luvut.charAt(i) != ' ') {
                luvunSailytys += luvut.charAt(i);
            } else {
                kaydytLuvut++;
                taulukko[kaydytLuvut - 1] = Integer.parseInt(luvunSailytys);
                luvunSailytys = "";              
            }
        }
        taulukko[kaydytLuvut] = Integer.parseInt(luvunSailytys);
        
        //System.out.println(taulKoko);
        //System.out.println(Arrays.toString(taulukko));
        
        int haluttuLuku = taulKoko;
        
        ArrayList <Integer> kaannot = new ArrayList<>();
        
        char temp;
        
        ArrayList <Integer> lista = new ArrayList<Integer>(Arrays.asList(taulukko));
        
        do {
            if (lista.indexOf(haluttuLuku) < taulukko.length - 1) {              
                
                //System.out.println("Indeksi " + lista.indexOf(haluttuLuku) + ", haluttu luku " + haluttuLuku);
                //Kaannetaan haluttu luku ensimmaiseksi
                kaannot.add(lista.indexOf(haluttuLuku) + 1);
                //System.out.println("Kaanto " + (lista.indexOf(haluttuLuku) + 1));
                
                lista = vaihdaLuvut(lista, haluttuLuku); 
                
                //System.out.println(lista);
                
                //Kaannetaan haluttu luku viimeiseksi
                kaannot.add(haluttuLuku);
                //System.out.println("Kaanto " + haluttuLuku);

                lista = vaihdaPaikka(lista, haluttuLuku - 1);               
                
                //System.out.println(lista.toString());
                
                haluttuLuku--;
            } else {
                haluttuLuku--;  
            }    
                        
        } while (haluttuLuku >= 1);
        
        System.out.println(kaannot.size());
        for (int kaanto : kaannot) {
            System.out.print(kaanto + " ");
        }
              
    }
    
    public static ArrayList<Integer> vaihdaLuvut(ArrayList<Integer> taulukko, int luku) {
        taulukko.set(taulukko.indexOf(luku), taulukko.get(0));
        taulukko.set(0, luku);
        return taulukko;
    }
    public static ArrayList<Integer> vaihdaPaikka(ArrayList<Integer> taulukko, int paikka) {
        int luku = taulukko.get(paikka);
        taulukko.set(paikka, taulukko.get(0));
        taulukko.set(0, luku);
        return taulukko;
    }
}

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
20
7 10 7 9 1 8 4 7 5 6 1 5 3 4 2...

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
2000
6 1000 97 999 132 998 797 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)