結果

問題 No.3601 Queen Dist Sum with One Wall
コンテスト
ユーザー cho435
提出日時 2026-07-31 00:06:37
言語 C++23
(gcc 15.2.0 + boost 1.90.0)
コンパイル:
g++-15 -O2 -lm -std=c++23 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
RE  
実行時間 -
コード長 1,695 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 3,857 ms
コンパイル使用メモリ 374,764 KB
実行使用メモリ 5,888 KB
最終ジャッジ日時 2026-07-31 00:06:48
合計ジャッジ時間 8,385 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge2_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample RE * 1
other RE * 22
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <bits/stdc++.h>
#include <atcoder/all>

using namespace std;
using ll = long long;
#define rep(i, s, t) for (ll i = s; i < (ll)(t); i++)
#define all(x) begin(x), end(x)

template <class T> bool chmin(T& x, T y) {
	return x > y ? (x = y, true) : false;
}
template <class T> bool chmax(T& x, T y) {
	return x < y ? (x = y, true) : false;
}

void solve() {
	ll h, w, sx, sy, x, y;
	cin >> h >> w >> sx >> sy >> x >> y;
	sx--, sy--, x--, y--;
	if (sx != x && sy != y) {
		ll ans = h * w * 2;
		ans -= h + w;
		if (sx + sy == x + y) {
			if (x < sx) {
				// y > sy
				// rep(i, x + 1, h) {
				// 	int j = x + y - i;
				// 	[x+y-h+1, y)
				// 	[0,y)
				// }
				ans -= min(y, x - h - 1);
			} else {
				// x > sx, y < sy
				// rep(i, 0, x) {
				// 	int j = x + y - i;
				// 	[y + 1, x + y + 1)
				// 	[y + 1, w)
				// }
				ans -= min(x, w - y - 1);
			}
		} else {
			// rep(i, 0, h) {
			// 	int j = sx + sy - i;
			// 	[sx+sy-h+1, sx + sy  + 1)
			// }
			ans -= min(sx + sy + 1, h + w - sx - sy - 1);
		}
		if (sx - sy == x - y) {
			if (sx < x) {
				// rep(i, 0, x) {
				// 	int j = i - x + y;
				// 	[-x+y, y)
				// 	[0, y)
				// }
				ans -= min(y, x);
			} else {
				// rep(i, x + 1, h) {
				// 	int j = i - x + y;
				// 	[y + 1, h -x + y)
				// 	[y + 1, w)
				// }
				ans -= min(h - x - 1, w - y - 1);
			}
		} else {
			// rep(i, 0, h) {
			// 	int j = i - sx + sy;
			// 	[-sx+sy, h-sx+sy)
			// }
			ans -= min(h - sx + sy, w + sx - sy);
		}
		cout << ans << '\n';
	} else {
		assert(0);
		cout << "-1\n";
	}
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout << fixed << setprecision(15);
	int t = 1;
	cin >> t;
	while (t--) solve();
}
0