Rezultati

Up. imeNalogaJezikRezultatČas oddaje
jam-2017 Jungle Speed Java 0/100Napaka med izvajanjem / ob izhodu (RTE) 11. maj '17 @ 20:08

Test Točke Porabljen spomin Porabljen čas Status
#1 9/9 38,023 MiB 0,000 s OK
#2 9/9 31,063 MiB 0,000 s OK
#3 9/9 39,613 MiB 0,000 s OK
#4 9/9 38,246 MiB 0,000 s OK
#5 0/9 40,059 MiB 0,000 s Program je končal z neničelno kodo
Stderr:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 16
	at Jungle.main(Jungle.java:54)
#6 0/9 39,648 MiB 0,000 s Program je končal z neničelno kodo
Stderr:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 16
	at Jungle.main(Jungle.java:54)
#7 0/9 30,691 MiB 0,000 s Program je končal z neničelno kodo
Stderr:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 16
	at Jungle.main(Jungle.java:54)
#8 0/9 34,941 MiB 0,000 s Program je končal z neničelno kodo
Stderr:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 16
	at Jungle.main(Jungle.java:54)
#9 0/9 38,035 MiB 0,000 s Program je končal z neničelno kodo
Stderr:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 16
	at Jungle.main(Jungle.java:54)
#10 0/9 36,906 MiB 0,000 s Program je končal z neničelno kodo
Stderr:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 16
	at Jungle.main(Jungle.java:54)
#11 10/10 40,125 MiB 0,000 s OK

Ocenjevani program (Jungle.java):
import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;

/**
 * Created by jam-2017 on 5/11/17.
 */
public class Jungle {
static final int MAX = 16; // 72
    public static void main(String args[]){
        Scanner scanner = new Scanner(System.in);

        int n = scanner.nextInt();
        int karte[][] = new int[n][MAX];

        int kart = 0;
        while(scanner.hasNextInt()) {
            karte[kart % n][kart / n] = scanner.nextInt();
            kart++;
        }

        int steviloKart[] = new int[n];
        int trenutnaKarta[] = new int[n];
        for(int i = 0; i < n; i ++){
            trenutnaKarta[i] = -1;
            steviloKart[i] = kart / 4;
        }

        int potez = 0;

        int naPotezi = 0;
        out:
        while(true){
            trenutnaKarta[naPotezi % n]--;

            if(trenutnaKarta[naPotezi] < 0){
                trenutnaKarta[naPotezi] = steviloKart[naPotezi]-1;
                /*for(int i = MAX - 1; i >= 0; i--){
                    if(karte[naPotezi][i] != 0){
                        trenutnaKarta[naPotezi] = i;
                        break;
                    }
                }*/
            }

           // System.out.println("Na potezi " + naPotezi + " " + trenutnaKarta[naPotezi]);
            // Preveri, ce se kaj ujemajo
            boolean prestavitev = false;
            //System.out.println(Arrays.toString(steviloKart));
            for(int i = 0 ; i < n; i ++){
                if(trenutnaKarta[i] < 0)continue ;
                if(i == naPotezi)continue;
                else{
                    if(trenutnaKarta[i] >= 0 && trenutnaKarta[naPotezi] >= 0 && karte[i][trenutnaKarta[i]] == karte[naPotezi][trenutnaKarta[naPotezi]]){
                        prestavitev = true;
                        // Ujemanje, premakni
                        int k[] = new int[MAX];
                        int kazalec = 0;
                        for(int l = trenutnaKarta[naPotezi]; l < steviloKart[naPotezi]; l++){
                            k[l - trenutnaKarta[naPotezi]] = karte[naPotezi][l];
                            karte[naPotezi][l] = 0;
                            kazalec++;
                        }
                        for(int l = trenutnaKarta[i]; l < steviloKart[i]; l++){
                            //System.out.println("Prestavljamo karto " + karte[i][l]);
                            k[kazalec] = karte[i][l];
                            karte[i][l] = 0;
                            kazalec++;
                            steviloKart[naPotezi]++;
                        }
                        steviloKart[i] = trenutnaKarta[i];
                        for(int l = 0; l < trenutnaKarta[naPotezi]; l++){
                            k[kazalec] = karte[naPotezi][l];
                            kazalec++;
                        }
                        for(int l = 0; l < kazalec; l++){
                            karte[naPotezi][l] = k[l];
                        }
                        trenutnaKarta[naPotezi] = -1;
                        trenutnaKarta[i] = -1;

                        //System.out.println("Prestavimo kart od" + i + " na " + naPotezi);
                       // System.out.println(Arrays.deepToString(karte));
                        if(steviloKart[i]== 0){
                            System.out.println(i+1);
                            break out;
                        }
                    }
                }
            }

            if(!prestavitev){
            naPotezi++;
            naPotezi %= n;
            }
            potez++;
            /*if(potez > 2000){
                //System.out.println("Dsost");
                break out;}*/
        }

       // System.out.println(Arrays.deepToString(karte));

    }
}
/*
4
2 3 4 1 4 4 4 2 1 3 1 2 2 3 3 1
* */