結果
| 問題 | No.5025 Forest Fire |
| コンテスト | |
| ユーザー |
37zigen
|
| 提出日時 | 2026-10-24 16:09:46 |
| 言語 | Java (openjdk 27 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 55 ms / 2,000 ms |
| + 296µs | |
| コード長 | 7,226 bytes |
| 記録 | |
| コンパイル時間 | 2,273 ms |
| コンパイル使用メモリ | 106,732 KB |
| 実行使用メモリ | 43,236 KB |
| スコア | 155,234,569 |
| 最終ジャッジ日時 | 2026-10-24 16:11:10 |
| 合計ジャッジ時間 | 60,745 ms |
|
ジャッジサーバーID (参考情報) |
judge4_0 / <nil> |
| 純コード判定しない問題か言語 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 50 |
ソースコード
public class Main implements java.lang.Runnable {
static MyPrintWriter pw = MyPrintWriter.getInstance();
static FastScanner sc = FastScanner.getInstance();
public static void main(java.lang.String[] args) throws java.io.IOException {
new Main().run();
Main.pw.flush();
// JavaToCpp.export();
}
int N;
int[][] d;
int K;
@java.lang.Override
public void run() {
N = Main.sc.nextInt();
K = Main.sc.nextInt();
char[][] cs = Main.sc.nextChars(N, N);
d = new int[N][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
d[i][j] = cs[i][j] - '0';
}
}
java.util.ArrayList<IntPoint> list = new java.util.ArrayList<>();
for (int i = 0; i < N; i++) {
if (d[i][i] != 0) {
list.add(new IntPoint(i, i));
d[i][i] = 0;
}
}
for (int i = 0; i < N; i++) {
if (d[(N - 1) - i][i] != 0) {
list.add(new IntPoint((N - 1) - i, i));
d[(N - 1) - i][i] = 0;
}
}
Main.pw.println(list.size());
for (int i = 0; i < list.size(); i++) {
var p = list.get(i);
Main.pw.println((p.x() + " ") + p.y());
}
Main.pw.flush();
}
}
class FastScanner {
private static FastScanner instance = null;
private final java.io.InputStream in = java.lang.System.in;
private final byte[] buffer = new byte[1 << 16];
private int ptr = 0;
private int buflen = 0;
private FastScanner() {
}
public static FastScanner getInstance() {
if (FastScanner.instance == null) {
FastScanner.instance = new FastScanner();
}
return FastScanner.instance;
}
private boolean hasNextByte() {
if (ptr < buflen) {
return true;
}
ptr = 0;
try {
buflen = in.read(buffer);
} catch (java.io.IOException e) {
e.printStackTrace();
}
return buflen > 0;
}
private int readByte() {
if (hasNextByte()) {
return buffer[ptr++];
} else {
return -1;
}
}
private boolean isPrintableChar(int c) {
return (33 <= c) && (c <= 126);
}
public boolean hasNext() {
while (hasNextByte() && (!isPrintableChar(buffer[ptr]))) {
ptr++;
}
return hasNextByte();
}
public java.lang.String next() {
if (!hasNext()) {
throw new java.util.NoSuchElementException();
}
java.lang.StringBuilder sb = new java.lang.StringBuilder();
int b = readByte();
while (isPrintableChar(b)) {
sb.appendCodePoint(b);
b = readByte();
}
return sb.toString();
}
public long nextLong() {
if (!hasNext()) {
throw new java.util.NoSuchElementException();
}
long n = 0;
boolean minus = false;
int b = readByte();
if (b == '-') {
minus = true;
b = readByte();
}
while ((b >= '0') && (b <= '9')) {
// n = n * 10 + (b - '0');
n = ((n << 1) + (n << 3)) + (b - '0');
b = readByte();
}
return minus ? -n : n;
}
public int nextInt() {
return ((int) (nextLong()));
}
public char[][] nextChars(int H, int W) {
if (W == 0) {
return new char[H][0];
}
char[][] a = new char[H][];
for (int i = 0; i < H; i++) {
a[i] = next().toCharArray();
}
return a;
}
}
class IntPoint {
int x;
int y;
public IntPoint(int x, int y) {
this.x = x;
this.y = y;
}
public int x() {
return x;
}
public int y() {
return y;
}
/**
* この点と別のオブジェクトの同値性を判定します。
*
* <p>計算量: O(1)</p>
*
* @param obj
* 比較対象のオブジェクト
* @return 同値であれば true, そうでなければ false
*/
// 未テスト
@java.lang.Override
public boolean equals(java.lang.Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof IntPoint)) {
return false;
}
IntPoint other = ((IntPoint) (obj));
return (x == other.x) && (y == other.y);
}
/**
* この点のハッシュコードを計算します。
*
* <p>計算量: O(1)</p>
*
* @return ハッシュコード
*/
// 未テスト
@java.lang.Override
public int hashCode() {
return java.util.Objects.hash(x, y);
}
@java.lang.Override
public java.lang.String toString() {
return ((("(" + x) + ",") + y) + ")";
}
}
class MyPrintWriter extends java.io.PrintWriter {
private static MyPrintWriter instance = null;
private MyPrintWriter() {
super(java.lang.System.out);
}
public static MyPrintWriter getInstance() {
if (MyPrintWriter.instance == null) {
MyPrintWriter.instance = new MyPrintWriter();
}
return MyPrintWriter.instance;
}
public MyPrintWriter(java.io.PrintStream out) {
super(out);
}
}
// --- Original Code ---
// import java.io.IOException;
// import java.util.ArrayList;
// import java.util.Arrays;
// import java.util.Random;
//
// import library.tools.FastScanner;
// import library.tools.JavaToCpp;
// import library.tools.MergeFiles;
// import library.tools.MyPrintWriter;
// import library.util.Fp;
// import library.util.geometry.IntPoint;
// import library.util.polynomial.PolynomialFpDynamic;
//
// public class Main implements Runnable {
//
// static MyPrintWriter pw=MyPrintWriter.getInstance();
// static FastScanner sc=FastScanner.getInstance();
//
// public static void main(String[] args) throws IOException {
// new Main().run();
// pw.flush();
// MergeFiles.export();
// // JavaToCpp.export();
// }
//
// Random r=new Random();
//
// int N;
// int[][]d;
// int K;
//
// @java.lang.Override
// public void run() {
// N=sc.nextInt();
// K=sc.nextInt();
// char[][]cs=sc.nextChars(N, N);
// d=new int[N][N];
// for (int i = 0; i < N; i++) {
// for (int j = 0; j < N; j++) {
// d[i][j]=cs[i][j]-'0';
// }
// }
// ArrayList<IntPoint> list=new ArrayList<>();
// for (int i = 0; i < N; i++) {
// if(d[i][i]!=0) {
// list.add(new IntPoint(i, i));
// d[i][i]=0;
// }
// }
// for (int i = 0; i < N; i++) {
// if(d[N-1-i][i]!=0) {
// list.add(new IntPoint(N-1-i, i));
// d[N-1-i][i]=0;
// }
// }
// pw.println(list.size());
// for (int i = 0; i < list.size(); i++) {
// var p=list.get(i);
// pw.println(p.x()+" "+p.y());
// }
// pw.flush();
// }
//
//
// int id(int i, int j) {
// return N*i+j;
// }
//
//
// void tr(Object...objects) {System.out.println(Arrays.deepToString(objects));}
//
//
// }
//
37zigen