結果

問題 No.55 正方形を描くだけの簡単なお仕事です。
ユーザー toshiro_yanagi
提出日時 2025-04-28 23:59:46
言語 Ruby
(3.4.1)
結果
AC  
実行時間 84 ms / 5,000 ms
コード長 1,297 bytes
コンパイル時間 590 ms
コンパイル使用メモリ 8,100 KB
実行使用メモリ 12,928 KB
最終ジャッジ日時 2025-04-28 23:59:50
合計ジャッジ時間 3,688 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 21
権限があれば一括ダウンロードができます
コンパイルメッセージ
Main.rb:55: warning: assigned but unused variable - n
Syntax OK

ソースコード

diff #

class Main
  INF = 2 ** 60

  def start
    aa = f9(input.split.map(&:to_i))
    idx = f8(aa)
    if not idx
      echo(-1)
    else
      echo f7(aa, idx).join(" ")
    end

    self.class.send(:remove_const, :INF)
    return nil
  end

  private

  def f7(aa, idx)
    def f(aa, i, j)
      (aa[i][j] - @o[j])
    end

    @o = aa[idx]
    aa.delete_at(idx)
    x, y = 0, 0
    for i in 0...2
      x += f(aa, i, 0)
      y += f(aa, i, 1)
    end
    result = [@o[0] + x, @o[1] + y]
    @o = nil
    result
  end

  def f8(aa)
    def ff(b)
      max = -INF
      idx = nil
      for i in 0...b.size
        v = b[i]
        if v > max
          max = v
          idx = i
        end
      end
      return idx
    end

    def f(aa, i, j)
      aa[i % aa.size][j]
    end

    b = []
    n = aa.size
    for i in 0...aa.size
      x = 0
      for j in 0...2
        x += (f(aa, i + 2, j) - f(aa, i + 1, j)) ** 2
      end
      b += [x]
    end
    c = b.sort
    return false if c[0] * 2 != c[-1] or c[0] != c[1]
    return ff(b)
  end

  def f9(a)
    aa = []
    while a.size > 0
      t = []
      for _ in 0...2
        t.append a.pop
      end
      aa += [t.reverse]
    end
    aa.reverse
  end

  def echo(*x)
    print(*x)
    puts
  end

  def input = gets.chomp
end

Main.new.start
0