結果
問題 | No.1398 調和の魔法陣 (構築) |
ユーザー |
|
提出日時 | 2021-02-20 00:45:30 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 212 ms / 3,153 ms |
コード長 | 9,630 bytes |
コンパイル時間 | 2,814 ms |
コンパイル使用メモリ | 85,440 KB |
実行使用メモリ | 42,184 KB |
最終ジャッジ日時 | 2024-09-17 03:04:30 |
合計ジャッジ時間 | 34,371 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 28 |
ソースコード
import java.io.OutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.Arrays;import java.nio.CharBuffer;import java.io.IOException;import java.nio.charset.CharsetDecoder;import java.nio.charset.StandardCharsets;import java.nio.ByteBuffer;import java.io.UncheckedIOException;import java.nio.charset.Charset;import java.io.Writer;import java.util.NoSuchElementException;import java.io.InputStream;/*** Built using CHelper plug-in* Actual solution is at the top** @author mikit*/public class Main {public static void main(String[] args) {InputStream inputStream = System.in;OutputStream outputStream = System.out;LightScanner2 in = new LightScanner2(inputStream);LightWriter2 out = new LightWriter2(outputStream);No1398 solver = new No1398();solver.solve(1, in, out);out.close();}static class No1398 {public void solve(int testNumber, LightScanner2 in, LightWriter2 out) {int w = in.ints(), h = in.ints(), x = in.ints();if (x > 36) {out.ans(-1).ln();return;}int t = x;int[][] p = new int[3][3];p[0][0] = Math.min(t, 9);t -= p[0][0];p[0][1] = Math.min(t, 9);t -= p[0][1];p[1][0] = Math.min(t, 9);t -= p[1][0];p[1][1] = Math.min(t, 9);int[][] ans = new int[h + 2][w + 2];for (int py = 0; py < 3; py++) {for (int px = 0; px < 3; px++) {trial:for (int f = 0; f < 2; f++) {ArrayUtil.fill(ans, 0);for (int i = 1; i <= h; i++) {for (int j = 1; j <= w; j++) {if (f == 0) {ans[i][j] = p[(i + py) % 3][(j + px) % 3];} else {ans[i][j] = p[(j + py) % 3][(i + px) % 3];}}}//System.out.println(px+"/"+py);//Arrays.stream(ans).map(Arrays::toString).forEach(System.out::println);for (int i = 1; i <= h; i++) {for (int j = 1; j <= w; j++) {int sum = 0;for (int dy = -1; dy <= 1; dy++) {for (int dx = -1; dx <= 1; dx++) {sum += ans[i + dy][j + dx];}}if (sum != x) continue trial;}}for (int i = 1; i <= h; i++) {for (int j = 1; j <= w; j++) {out.print((char) ('0' + ans[i][j]));}out.ln();}return;}}}out.ans(-1).ln();return;}}static abstract class LightScannerAdapter implements AutoCloseable {public abstract void close();}static final class ArrayUtil {private ArrayUtil() {}public static void fill(int[] a, int v) {Arrays.fill(a, v);}public static void fill(int[][] a, int v) {for (int[] ints : a) {fill(ints, v);}}}static class LightScanner2 extends LightScannerAdapter {private static final int BUF_SIZE = 16 * 1024;private final InputStream stream;private final byte[] buf = new byte[BUF_SIZE];private int ptr;private int len;public LightScanner2(InputStream stream) {this.stream = stream;}private void reload() {try {ptr = 0;len = stream.read(buf);} catch (IOException ex) {throw new UncheckedIOException(ex);}}private void load(int n) {if (ptr + n <= len) return;System.arraycopy(buf, ptr, buf, 0, len - ptr);len -= ptr;ptr = 0;try {int r = stream.read(buf, len, BUF_SIZE - len);if (r == -1) return;len += r;if (len != BUF_SIZE) buf[len] = '\n';} catch (IOException ex) {throw new UncheckedIOException(ex);}}private void skip() {while (len != -1) {while (ptr < len && isTokenSeparator(buf[ptr])) ptr++;if (ptr < len) return;reload();}throw new NoSuchElementException("EOF");}public int ints() {skip();load(12);int b = buf[ptr++];boolean negate;if (b == '-') {negate = true;b = buf[ptr++];} else negate = false;int x = 0;for (; !isTokenSeparator(b); b = buf[ptr++]) {if ('0' <= b && b <= '9') x = x * 10 + b - '0';else throw new NumberFormatException("Unexpected character '" + ((char) b) + "'");}return negate ? -x : x;}public void close() {try {stream.close();} catch (IOException e) {throw new UncheckedIOException(e);}}private static boolean isTokenSeparator(int b) {return b < 33 || 126 < b;}}static class LightWriter2 implements AutoCloseable {private static final int BUF_SIZE = 16 * 1024;private final OutputStream out;private final byte[] buf = new byte[BUF_SIZE];private int ptr;private boolean autoflush = false;private boolean breaked = true;public LightWriter2(OutputStream out) {this.out = out;}public LightWriter2(Writer out) {this.out = new LightWriter2.WriterOutputStream(out);}private void allocate(int n) {if (ptr + n <= BUF_SIZE) return;try {out.write(buf, 0, ptr);ptr = 0;} catch (IOException ex) {throw new UncheckedIOException(ex);}if (BUF_SIZE < n) throw new IllegalArgumentException("Internal buffer exceeded");}public void close() {try {out.write(buf, 0, ptr);ptr = 0;out.flush();out.close();} catch (IOException ex) {throw new UncheckedIOException(ex);}}public LightWriter2 print(char c) {allocate(1);buf[ptr++] = (byte) c;breaked = false;return this;}private static int countDigits(int l) {if (l >= 1000000000L) return 10;if (l >= 100000000L) return 9;if (l >= 10000000L) return 8;if (l >= 1000000L) return 7;if (l >= 100000L) return 6;if (l >= 10000L) return 5;if (l >= 1000L) return 4;if (l >= 100L) return 3;if (l >= 10L) return 2;return 1;}public LightWriter2 ans(int x) {allocate(12);if (!breaked) buf[ptr++] = ' ';breaked = false;if (x < 0) {buf[ptr++] = '-';x = -x;}int n = countDigits(x);for (int i = ptr + n - 1; ptr <= i; i--) {buf[i] = (byte) (x % 10 + '0');x /= 10;}ptr += n;return this;}public LightWriter2 ln() {allocate(1);buf[ptr++] = '\n';breaked = true;if (autoflush) {try {out.flush();} catch (IOException ex) {throw new UncheckedIOException(ex);}}return this;}private static class WriterOutputStream extends OutputStream {final Writer writer;final CharsetDecoder decoder;WriterOutputStream(Writer writer) {this.writer = writer;this.decoder = StandardCharsets.UTF_8.newDecoder();}public void write(int b) throws IOException {writer.write(b);}public void write(byte[] b) throws IOException {writer.write(decoder.decode(ByteBuffer.wrap(b)).array());}public void write(byte[] b, int off, int len) throws IOException {writer.write(decoder.decode(ByteBuffer.wrap(b, off, len)).array());}public void flush() throws IOException {writer.flush();}public void close() throws IOException {writer.close();}}}}