Task: | Ositus |
Sender: | andreibe |
Submission time: | 2021-10-10 17:07:22 +0300 |
Language: | Java |
Status: | READY |
Result: | 0 |
group | verdict | score |
---|---|---|
#1 | RUNTIME ERROR | 0 |
#2 | RUNTIME ERROR | 0 |
#3 | RUNTIME ERROR | 0 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | RUNTIME ERROR | 0.11 s | 1, 2, 3 | details |
#2 | RUNTIME ERROR | 0.10 s | 1, 2, 3 | details |
#3 | RUNTIME ERROR | 0.11 s | 1, 2, 3 | details |
#4 | RUNTIME ERROR | 0.11 s | 1, 2, 3 | details |
#5 | RUNTIME ERROR | 0.11 s | 2, 3 | details |
#6 | RUNTIME ERROR | 0.11 s | 3 | details |
#7 | RUNTIME ERROR | 0.11 s | 3 | details |
Code
import java.io.IOException; import java.nio.file.Paths; import java.util.*; class Pair { int x; int y; public Pair(int x, int y) { this.x = x; this.y = y; } } public class Main { static int SIZE = 50; static ArrayList<HashSet<Integer>> naapurit = new ArrayList<>(SIZE*SIZE +1); static Random rng = new Random(); private static final ArrayList<Integer> empty=new ArrayList<>(); public static void main(String[] args) throws IOException { Scanner scanner = new Scanner(Paths.get("test.txt")); for (int i = 0; i < SIZE*SIZE+1; i++) { naapurit.add(new HashSet<>()); } while (scanner.hasNextLine()) { String line = scanner.nextLine(); String[] parts = line.split(" "); int last = -1; for (String part : parts) { int ipart = Integer.parseInt(part); if (last != -1) { naapurit.get(last).add(ipart); naapurit.get(ipart).add(last); } last = ipart; } } for (int i = 1; i < naapurit.size(); i++) { HashSet<Integer> integers = naapurit.get(i); if (integers.isEmpty()) { empty.add(i); } } System.out.println(empty.size()); solve(); } static int tryOne(int number, int x, int y) { boolean b1 = insideBounds(x, y); if (!b1) { return -1; } boolean b = canBePlacedBasicRules(number, x, y); boolean b2 = canBePlaced(number, x, y); if (b && b2) one(number, x, y); if (!b2 && b) { return -3; } if (b) { return 0; } return -2; } static ArrayList<Integer> order = new ArrayList<>(); static void one(int number, int x, int y) { HashSet<Integer> set = naapurit.get(number); if (set.isEmpty()) { return; } added.put(number, new Pair(x,y)); order.add(number); ruudukko[y][x] = number; try { Thread.sleep(1000); print(ruudukko); System.out.println(); } catch (InterruptedException e) { e.printStackTrace(); } if (added.size() >= SIZE*SIZE-empty.size()) { throw new IllegalArgumentException("OH MY GOD!!!"); } for (Integer integer : set) { int b = tryOne(integer,x+1,y); int b2 = tryOne(integer,x-1,y); int b3 = tryOne(integer,x,y+1); int b4 = tryOne(integer,x,y-1); if ((b<0 && b2 <0 && b3<0 && b4 < 0) && (b == -3 | b2 ==-3 | b3==-3 | b4==-3)) { int index = order.indexOf(number); for (int i = order.size()-1; i >= index; i = order.size()-1) { int num = order.get(i); Pair pair = added.get(num); added.remove(num); ruudukko[pair.y][pair.x] = 0; order.remove(order.size()-1); } return; } } if (!naapuritPaikallaan(number,x,y)) { int index = order.indexOf(number); for (int i = order.size()-1; i >= index; i = order.size()-1) { int num = order.get(i); Pair pair = added.get(num); added.remove(num); ruudukko[pair.y][pair.x] = 0; order.remove(order.size()-1); } } } static boolean naapuritPaikallaan(int number,int x,int y) { Set<Integer> naap = naapurit.get(number); ArrayList<Integer> ruudut = new ArrayList<>(); ruudut.add(getRuutu(x+1,y)); ruudut.add(getRuutu(x-1,y)); ruudut.add(getRuutu(x,y+1)); ruudut.add(getRuutu(x,y-1)); for (Integer integer : naap) { if (!ruudut.contains(integer)) { return false; } } return true; } static int getRuutu(int x, int y) { if (!insideBounds(x,y)) { return 0; } return ruudukko[x][y]; } static boolean insideBounds(int x, int y) { return !(x > SIZE - 1 | x < 0 | y > SIZE - 1 | y < 0); } static boolean canBePlacedBasicRules(int number, int x, int y) { return !added.containsKey(number) && ruudukko[y][x] == 0; } static boolean canBePlaced(int number, int x, int y) { for (Integer integer : added.keySet()) { if (naapurit.get(integer).contains(number) && added.containsKey(integer)) { if (!isNear(added.get(integer),x,y)) { return false; } } } return mahdollistaLaittaaKaikkiNaapurit(naapurit.get(number),x,y); } static int test(int x, int y,Set<Integer> set) { if (!insideBounds(x,y)) { return 0; } int r = ruudukko[y][x]; if (r== 0) { return 1; } if (set.contains(r)) { return 1; } return 0; } static boolean mahdollistaLaittaaKaikkiNaapurit(Set<Integer> set, int x,int y) { int tila = 0; tila += test(x+1,y,set); tila += test(x-1,y,set); tila += test(x,y+1,set); tila += test(x,y-1,set); return tila >= set.size(); } static void print(int[][] ar) { for (int[] ints : ar) { for (int anInt : ints) { System.out.printf("%4d",anInt); } System.out.print("\n"); } } static boolean isNear(Pair pair,int x,int y) { boolean xsame = (pair.x == x+1 | pair.x == x-1) && y==pair.y; boolean ysame = (pair.y == y+1 | pair.y == y-1) && x==pair.x; return xsame ^ ysame; } static int[][] ruudukko = new int[SIZE][SIZE]; static HashMap<Integer, Pair> added = new HashMap<>(); private static void solve() { int l = 10000; while (l > 0) { l--; try { one(rng.nextInt(SIZE*SIZE-1)+1,rng.nextInt(SIZE),rng.nextInt(SIZE)); } catch (IllegalArgumentException e) { e.printStackTrace(); int i = 0; for (int[] ints : ruudukko) { for (int j = 0; j < ints.length; j++) { if (ints[j] == 0) { ints[j] = empty.get(i); i++; } } } print(ruudukko); break; } } } }
Test details
Test 1
Group: 1, 2, 3
Verdict: RUNTIME ERROR
input |
---|
a |
correct output |
---|
1 |
user output |
---|
(empty) |
Error:
Exception in thread "main" java.nio.file.NoSuchFileException: test.txt at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:219) at java.base/java.nio.file.Files.newByteChannel(Files.java:371) at java.base/java.nio.file.Files.newByteChannel(Files.java:422) at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) at java.base/java.nio.file.Files.newInputStream(Files.java:156) at java.base/java.util.Scanner.<init>(Scanner.java:718) at Main.main(Main.java:20)
Test 2
Group: 1, 2, 3
Verdict: RUNTIME ERROR
input |
---|
abcdefghij |
correct output |
---|
512 |
user output |
---|
(empty) |
Error:
Exception in thread "main" java.nio.file.NoSuchFileException: test.txt at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:219) at java.base/java.nio.file.Files.newByteChannel(Files.java:371) at java.base/java.nio.file.Files.newByteChannel(Files.java:422) at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) at java.base/java.nio.file.Files.newInputStream(Files.java:156) at java.base/java.util.Scanner.<init>(Scanner.java:718) at Main.main(Main.java:20)
Test 3
Group: 1, 2, 3
Verdict: RUNTIME ERROR
input |
---|
abcabaacbc |
correct output |
---|
120 |
user output |
---|
(empty) |
Error:
Exception in thread "main" java.nio.file.NoSuchFileException: test.txt at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:219) at java.base/java.nio.file.Files.newByteChannel(Files.java:371) at java.base/java.nio.file.Files.newByteChannel(Files.java:422) at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) at java.base/java.nio.file.Files.newInputStream(Files.java:156) at java.base/java.util.Scanner.<init>(Scanner.java:718) at Main.main(Main.java:20)
Test 4
Group: 1, 2, 3
Verdict: RUNTIME ERROR
input |
---|
aaxxxxxxaa |
correct output |
---|
4 |
user output |
---|
(empty) |
Error:
Exception in thread "main" java.nio.file.NoSuchFileException: test.txt at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:219) at java.base/java.nio.file.Files.newByteChannel(Files.java:371) at java.base/java.nio.file.Files.newByteChannel(Files.java:422) at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) at java.base/java.nio.file.Files.newInputStream(Files.java:156) at java.base/java.util.Scanner.<init>(Scanner.java:718) at Main.main(Main.java:20)
Test 5
Group: 2, 3
Verdict: RUNTIME ERROR
input |
---|
mfyzvoxmppoxcvktmcjkryyocfweub... |
correct output |
---|
643221148 |
user output |
---|
(empty) |
Error:
Exception in thread "main" java.nio.file.NoSuchFileException: test.txt at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:219) at java.base/java.nio.file.Files.newByteChannel(Files.java:371) at java.base/java.nio.file.Files.newByteChannel(Files.java:422) at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) at java.base/java.nio.file.Files.newInputStream(Files.java:156) at java.base/java.util.Scanner.<init>(Scanner.java:718) at Main.main(Main.java:20)
Test 6
Group: 3
Verdict: RUNTIME ERROR
input |
---|
weinscqmmpgbrlboocvtbptgbahmwv... |
correct output |
---|
831644159 |
user output |
---|
(empty) |
Error:
Exception in thread "main" java.nio.file.NoSuchFileException: test.txt at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:219) at java.base/java.nio.file.Files.newByteChannel(Files.java:371) at java.base/java.nio.file.Files.newByteChannel(Files.java:422) at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) at java.base/java.nio.file.Files.newInputStream(Files.java:156) at java.base/java.util.Scanner.<init>(Scanner.java:718) at Main.main(Main.java:20)
Test 7
Group: 3
Verdict: RUNTIME ERROR
input |
---|
sxaoxcyrjoeieyinaqxwukgzdnhhsw... |
correct output |
---|
816016015 |
user output |
---|
(empty) |
Error:
Exception in thread "main" java.nio.file.NoSuchFileException: test.txt at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:219) at java.base/java.nio.file.Files.newByteChannel(Files.java:371) at java.base/java.nio.file.Files.newByteChannel(Files.java:422) at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) at java.base/java.nio.file.Files.newInputStream(Files.java:156) at java.base/java.util.Scanner.<init>(Scanner.java:718) at Main.main(Main.java:20)