結果

問題 No.3012 岩井星人グラフ
ユーザー usk
提出日時 2025-02-02 03:50:41
言語 Java
(openjdk 23)
結果
AC  
実行時間 599 ms / 2,000 ms
コード長 3,538 bytes
コンパイル時間 3,819 ms
コンパイル使用メモリ 90,884 KB
実行使用メモリ 83,740 KB
最終ジャッジ日時 2025-02-02 03:51:01
合計ジャッジ時間 18,470 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 23
権限があれば一括ダウンロードができます

ソースコード

diff #

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
import java.util.HashMap;
import java.util.HashSet;

public class Main {
    static void Solve() {
        var N = ToInt(InputNum());
        var M = ToInt(InputNum());
        var ans = new ArrayList<ArrayList<Integer>>();
        ans.add(new ArrayList<>(Arrays.asList(N * M, N * M)));

        for (var i = 0; i < N; i++) {
            ans.add(new ArrayList<>(Arrays.asList(i + 1, (i + 1) % N + 1)));
        }

        var margin = 0;
        var to = 0;

        for (var i = 1; i <= N; i++) {
            for (var j = 0; j < M - 1; j++) {
                if (j == 0) {
                    to = i + N + margin;
                    ans.add(new ArrayList<>(Arrays.asList(i, to)));
                } else {
                    ans.add(new ArrayList<>(Arrays.asList(to, to + 1)));
                    to++;
                }
            }
            margin += M - 2;
        }

        for (ArrayList<Integer> arrayList : ans) {
            Output(arrayList, " ");
        }
    }

    public static void main(String[] args) {
        Solve();
        System.out.print(stringBuilder.toString());
        sc.close();
    }

    static Scanner sc = new Scanner(System.in);
    static StringBuilder stringBuilder = new StringBuilder();
    static String el = System.getProperty("line.separator");

    // #region 入出力
    static long InputNum() {
        return sc.nextLong();
    }

    static ArrayList<Long> InputNums(long n) {
        ArrayList<Long> li = new ArrayList<>();
        for (var i = 0; i < n; i++)
            li.add(sc.nextLong());
        return li;
    }

    static ArrayList<ArrayList<Long>> InputsNums(long h, long w) {
        ArrayList<ArrayList<Long>> li = new ArrayList<ArrayList<Long>>();
        for (var i = 0; i < h; i++) {
            li.add(InputNums(w));
        }
        return li;
    }

    static String InputString() {
        return sc.next();
    }

    static String InputStringLine() {
        return sc.nextLine();
    }

    static ArrayList<String> InputStrings(long n) {
        var li = new ArrayList<String>();
        for (var i = 0; i < n; i++)
            li.add(InputString());
        return li;
    }

    static ArrayList<String> InputStringLines(long n) {
        var li = new ArrayList<String>();
        for (var i = 0; i < n; i++)
            li.add(InputStringLine());
        return li;
    }

    static ArrayList<ArrayList<String>> InputsStrings(long h, long w) {
        var li = new ArrayList<ArrayList<String>>();
        for (var i = 0; i < h; i++)
            li.add(InputStrings(w));
        return li;
    }

    static void Output(boolean n) {
        stringBuilder.append(n ? "Yes" + el : "No" + el);
    }

    static <T> void Output(T t) {
        stringBuilder.append(t.toString() + el);
    }

    static <T> void Output(T[] ts, String sep) {
        if (ts.length != 0) {
            stringBuilder.append(ts[0]);
            for (var i = 1; i < ts.length; i++)
                stringBuilder.append(sep + ts[i]);
            stringBuilder.append(el);
        }
    }

    static <T> void Output(ArrayList<T> ts, String sep) {
        if (!ts.isEmpty()) {
            stringBuilder.append(ts.get(0));
            for (var i = 1; i < ts.size(); i++)
                stringBuilder.append(sep + ts.get(i));
            stringBuilder.append(el);
        }
    }
    // #endregion

    // #region 変換
    static int ToInt(long n) {
        return (int) n;
    }
    // #endregion
}
0