結果
問題 | No.2267 群の公理 |
ユーザー | 👑 p-adic |
提出日時 | 2022-09-24 00:54:54 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
WA
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,429 bytes |
コンパイル時間 | 572 ms |
コンパイル使用メモリ | 70,172 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2024-10-10 11:37:33 |
合計ジャッジ時間 | 2,039 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
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 ); assert( N < bound ); int T[bound][bound]; FOR( i , 0 , N ){ int ( &Ti )[bound] = T[i]; FOR( j , 0 , N ){ cin >> Ti[j]; assert( Ti[j] < bound ); } } 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; 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 && T[i][n] == e ){ unit = true; break; } } if( ! unit ){ break; } } if( unit ){ RETURN( "YES" ); } } } RETURN( "NO" ); }