結果

問題 No.853 河原の石
ユーザー CuriousFairy315CuriousFairy315
提出日時 2019-07-06 01:44:27
言語 Java
(openjdk 23)
結果
AC  
実行時間 136 ms / 3,153 ms
コード長 783 bytes
コンパイル時間 2,106 ms
コンパイル使用メモリ 77,744 KB
実行使用メモリ 54,424 KB
最終ジャッジ日時 2024-09-22 14:39:00
合計ジャッジ時間 11,675 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 57
権限があれば一括ダウンロードができます

ソースコード

diff #

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		try (Scanner sc = new Scanner(System.in)) {
			int H = sc.nextInt(), W = Math.abs(sc.nextInt());
			if (H < 0 || H > 1000000000) System.exit(1);
			else if (W > 1000000000) System.exit(1);
			if (W == 0) { // 自明な0手
				System.out.println(0);
			} else {
				long ans = H++;
				for (long i = 1, j = 1;;j += i++) {
					if (j + i <= Math.min(H, W)) {
						ans += i * i;
					} else { // 終端処理
						long dist = Math.min(H, W) - j;
						ans += i * dist;
						if (W <= H) break;
						ans += (i * i - (i - dist)) * ((W - H) / i);
						ans += i * ((W - H) % i);
						ans -= Math.min(i - dist, (W - H) % i);
						break;
					}
				}
				System.out.println(ans);
			}
		}
	}
}
0