結果
| 問題 |
No.2112 All 2x2 are Equal
|
| コンテスト | |
| ユーザー |
👑 |
| 提出日時 | 2022-10-05 23:04:12 |
| 言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,817 bytes |
| コンパイル時間 | 1,897 ms |
| コンパイル使用メモリ | 193,208 KB |
| 最終ジャッジ日時 | 2025-02-07 22:06:08 |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | WA * 2 |
| other | WA * 34 |
ソースコード
// ジャッジコードチェック
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
#define UNTIE ios_base::sync_with_stdio( false ); cin.tie( nullptr )
#define CIN( LL , A ) LL A; cin >> A
#define QUIT return 0
int main()
{
UNTIE;
constexpr const ll bound = 1000;
CIN( ll , H );
assert( 2 <= H && H <= bound );
CIN( ll , W );
assert( 2 <= W && W <= bound );
ll minmax[2] = { 1 , H * W };
constexpr const ll incrdecr[2] = { 1 , -1 };
ll A[bound][bound];
ll h = 0;
ll w = 0;
ll index;
bool transpose = W % 2 == 0 && H % 2 == 1;
if( transpose ){
swap( H , W );
}
constexpr const ll shift = 4294967296;
while( h + 1 < H ){
w = 0;
index = 0;
ll ( &Ah )[bound] = A[h];
ll ( &Ah_plus )[bound] = A[h+1];
while( w < W ){
Ah[w] = minmax[index] + shift;
minmax[index] += incrdecr[index];
index = 1 - index;
Ah_plus[w] = minmax[index] + shift;
minmax[index] += incrdecr[index];
w++;
}
h += 2;
}
if( h + 1 == H ){
w = 0;
index = 0;
ll ( &Ah )[bound] = A[h];
ll W_minus = W - 1;
ll W_half = ( W + 1 ) / 2;
while( w < W_half ){
Ah[w] = minmax[index] + shift;
minmax[index] += incrdecr[index];
index = 1 - index;
Ah[W_minus - w] = minmax[index] + shift;
minmax[index] += incrdecr[index];
w++;
}
}
cout << "Yes\n";
h = 0;
w = 0;
if( transpose ){
swap( H , W );
while( h < H ){
cout << A[0][h];
w = 1;
while( w < W ){
cout << " " << A[w][h];
w++;
}
cout << "\n";
h++;
}
} else {
while( h < H ){
ll ( &Ah )[bound] = A[h];
cout << Ah[0];
w = 1;
while( w < W ){
cout << " " << Ah[w];
w++;
}
cout << "\n";
h++;
}
}
QUIT;
}