結果
問題 | No.1384 Bishop and Rook |
ユーザー |
|
提出日時 | 2024-07-25 00:06:27 |
言語 | C# (.NET 8.0.404) |
結果 |
AC
|
実行時間 | 347 ms / 2,000 ms |
コード長 | 3,161 bytes |
コンパイル時間 | 9,752 ms |
コンパイル使用メモリ | 169,932 KB |
実行使用メモリ | 187,624 KB |
最終ジャッジ日時 | 2024-07-25 00:06:49 |
合計ジャッジ時間 | 20,522 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 55 |
コンパイルメッセージ
復元対象のプロジェクトを決定しています... /home/judge/data/code/main.csproj を復元しました (99 ms)。 MSBuild のバージョン 17.9.6+a4ecab324 (.NET) main -> /home/judge/data/code/bin/Release/net8.0/main.dll main -> /home/judge/data/code/bin/Release/net8.0/publish/
ソースコード
using System;using static System.Console;using System.Linq;using System.Collections.Generic;class Program{static int NN => int.Parse(ReadLine());static int[] NList => ReadLine().Split().Select(int.Parse).ToArray();public static void Main(){Solve();}static void Solve(){var t = NN;var ans = new string[t];for (var u = 0; u < t; ++u){var c = NList;ans[u] = Bis(c[0], c[1]);}WriteLine(string.Join("\n", ans));}static string Bis(int h, int w){if (h == 1 && w == 1) return "0\n1 1";if (h % 2 == 1 || w % 2 == 1) return "-1";var t = new System.Text.StringBuilder();var ans = new List<string>();ans.Add((h * w - 1).ToString());var x = 0;var y = 1;var mx4 = new int[] { 1, 1, -1, 1 };var my4 = new int[] { 0, 1, 0, -1 };if (w == 2){for (var i = 0; i < h * w; ++i){x += mx4[i % 4];y += my4[i % 4];ans.Add($"{x} {y}");}return string.Join("\n", ans);}var mx1 = new int[] { 1, 1, 0, -1 };var my1 = new int[] { 0, 1, -1, 1 };var mx2 = new int[] { 0, 1, 0, -1 };var my2 = new int[] { 1, 1, -1, 1 };var mx3 = new int[] { 0, 1, -1, 1 };var my3 = new int[] { 1, 1, 0, -1 };var mx5 = new int[] { 0, -1, 0, 1 };var my5 = new int[] { -1, -1, 1, -1 };for (var i = 0; i < h; i += 2){if (i % 4 == 0){for (var j = 0; j < w; j += 2){for (var p = 0; p < 4; ++p){if (j == 0){x += mx1[p];y += my1[p];}else if (j + 2 < w){x += mx2[p];y += my2[p];}else{x += mx3[p];y += my3[p];}ans.Add($"{x} {y}");}}}else{for (var j = w - 2; j >= 0; j -= 2){for (var p = 0; p < 4; ++p){if (j + 2 == w){x += mx4[p];y += my4[p];}else{x += mx5[p];y += my5[p];}ans.Add($"{x} {y}");}}}}return string.Join("\n", ans);}}