Rezultati

Up. imeNalogaJezikRezultatČas oddaje
snajper Zaletavanje Java 0/100Napaka med izvajanjem / ob izhodu (RTE) 19. apr '18 @ 18:44

Test Točke Porabljen spomin Porabljen čas Status
#1 0/14 36,070 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​- - - - - - - - - 
- - - 8 - - - - - 
- - 4 - - - - - - 
- - - - - - - 2 - 
- 6 - - - - - - 1 
Pravilen izhod:
​8 4
8 7
4 7
2 7
8 3
#2 0/14 40,035 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​- - - - - - - - 
- - - - 4 - - - 
- - 3 - - 2 1 - 
- - - - - - - - 
- - - - - - - - 
Pravilen izhod:
​7 7
7 8
7 7
5 9
7 9
#3 0/14 35,895 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​- - 4 - - - - - 
6 - - - - - - 11 
- 15 13 - - 8 9 - 
- - - - 3 - - 14 
- - 2 1 - - - - 
Pravilen izhod:
​3 7
2 7
4 7
7 7
7 5
#4 0/14 42,789 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​- - - - - - - - - - - - 64 - - - - - - - - 
- - 63 - - - 27 - - - - - - - - - - - - - - 
41 11 - - 12 - - - - - - - - - - - - - 14 - - 
- - - - - - 39 - - - - - 42 - - - - 23 - - - 
- - - - - - 51 - - - - - - - - - - - - 22 - 
Pravilen izhod:
​3 30
15 30
15 30
20 16
18 30
#5 0/14 75,188 MiB 0,000 s Prekoračen čas
#6 0/15 34,953 MiB 0,000 s Program je končal z neničelno kodo
Stderr:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at Zalet.main(Zalet.java:34)
#7 0/15 33,953 MiB 0,000 s Program je končal z neničelno kodo
Stderr:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at Zalet.main(Zalet.java:34)

Ocenjevani program (Zalet.java):
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Scanner;

/**
 * Created by snajper on 4/19/18.
 */
public class Zalet {

    private static final int GOR = -1;
    private static final int DESNO = 1;

    private static final int DIR = 0;
    private static final int X = 1;
    private static final int Y = 2;


    public static void main(final String[] args) {
        Scanner in = new Scanner(System.in);
        /*try {
            in = new Scanner(new File("./data/zalet.in"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }*/

        final int n = in.nextInt();
        final int w = in.nextInt();
        final int h = in.nextInt();
        int endPosCount = 0;

        int[][] avto = new int[n][3];
        ArrayList<Integer>[][] polje = new ArrayList[w+1][h+1];
        for (int x = 0; x <= w; x++) {
            for (int y = 0; y <= h; y++) {
                polje[x][y] = new ArrayList<>();
            }
        }

        for (int i = 0; i < n; i++) {
            if(in.next().charAt(0) == 'G') {
                avto[i][DIR] = GOR;
            } else {
                avto[i][DIR] = DESNO;
            }

            final int x = in.nextInt();
            final int y = in.nextInt();
            avto[i][X] = x;
            avto[i][Y] = y;

            polje[x][y].add(i);
        }


        while(true) {
            printPolje(polje, w, h);

            for (int i = 0; i < n; i++) {
                polje_remove(polje, avto[i], i);

                if(avto[i][DIR] == DESNO) {
                    avto[i][X]++;
                } else {
                    avto[i][Y]++;
                }


                if(avto[i][X] == w + 1) {
                    avto[i][X] = w;
                }
                if(avto[i][Y] == h + 1) {
                    avto[i][Y] = h;
                }

                polje_add(polje, avto[i], i);
            }

            for (int i = 0; i < n; i++) {
                for (int j = i+1; j < n; j++) {
                    if(avto[i][X] == avto[j][X] && avto[i][Y] == avto[j][Y]) {
                        if(avto[i][DIR] != avto[j][DIR]) {
                            avto[i][DIR] = flip(avto[i][DIR]);
                            avto[j][DIR] = flip(avto[j][DIR]);
                        }
                    }
                }
            }
            endPosCount = 0;
            for (int i = 0; i < n; i++) {
                if(avto[i][DIR] == GOR && avto[i][Y] == h ||
                        avto[i][DIR] == DESNO && avto[i][X] == w) {
                    endPosCount += 1;
                }
            }

            if(endPosCount == n) {
                break;
            }
        }

        for (int i = 0; i < n; i++) {
            System.out.println(avto[i][X] + " " + avto[i][Y]);
        }
    }

    private static int flip(int dir) {
        if(dir == GOR) {
            return DESNO;
        } else {
            return GOR;
        }
    }

    private static void printPolje(ArrayList<Integer>[][] polje, int w, int h) {
        for (int y = h; y >= 0; y--) {
            for (int x = 0; x <= w; x++) {
                final ArrayList<Integer> avti = polje[x][y];
                if (avti.isEmpty()) {
                    System.out.print("- ");
                } else {
                    System.out.print((avti.get(0) + 1) + " ");
                }
            }
            System.out.println();
        }
        System.out.println();
    }

    private static void polje_add(ArrayList<Integer>[][] polje, int[] avto, int i) {
        final int x = avto[X];
        final int y = avto[Y];
        polje[x][y].add(i);
    }

    private static void polje_remove(ArrayList<Integer>[][] polje, int[] avto, int i) {
        final int x = avto[X];
        final int y = avto[Y];
        polje[x][y].remove(Integer.valueOf(i));
    }
}