結果
| 問題 |
No.2267 群の公理
|
| コンテスト | |
| ユーザー |
👑 |
| 提出日時 | 2022-09-24 01:00:56 |
| 言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
| 結果 |
WA
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 1,425 bytes |
| コンパイル時間 | 521 ms |
| コンパイル使用メモリ | 67,784 KB |
| 最終ジャッジ日時 | 2025-02-07 14:10:01 |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | WA * 50 |
ソースコード
#include <iostream>
#include <string>
#include <stdio.h>
#include <stdint.h>
using namespace std;
#define CIN( LL , A ) LL A; cin >> A
#define FOR( VAR , INITIAL , FINAL_PLUS_ONE ) for( remove_const<remove_reference<decltype( FINAL_PLUS_ONE )>::type >::type VAR = INITIAL ; VAR < FINAL_PLUS_ONE ; VAR ++ )
#define QUIT return 0
#define RETURN( ANSWER ) cout << ( ANSWER ) << "\n"; QUIT
#include <cassert>
#define MAIN main
int main()
{
constexpr const int bound = 31;
CIN( int , N );
int T[bound][bound];
FOR( i , 0 , N ){
int ( &Ti )[bound] = T[i];
FOR( j , 0 , N ){
cin >> Ti[j];
}
}
FOR( n0 , 0 , N ){
int ( &Tn0 )[bound] = T[n0];
FOR( n1 , 0 , N ){
int& Tn0n1 = Tn0[n1];
int ( &Tn1 )[bound] = T[n1];
FOR( n2 , 0 , N ){
if( T[Tn0n1][n2] != Tn0[Tn1[n2]] ){
RETURN( "NO" );
}
}
}
}
bool unit = false;
FOR( e , 0 , N ){
int ( &Te )[bound] = T[e];
unit = true;
FOR( n , 0 , N ){
if( Te[n] != n ){
unit = false;
break;
} else if( T[n][e] != n ){
unit = false;
break;
}
}
if( unit ){
FOR( n , 0 , N ){
int ( &Tn )[bound] = T[n];
unit = false;
FOR( i , 0 , N ){
if( Tn[i] == e ){
if( T[i][n] == e ){
unit = true;
break;
} else {
RETURN( "NO" );
}
}
}
if( ! unit ){
RETURN( "NO" );
}
}
RETURN( "YES" );
}
}
RETURN( "NO" );
}