結果
問題 |
No.2267 群の公理
|
ユーザー |
👑 |
提出日時 | 2023-03-08 11:47:53 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 1,904 bytes |
コンパイル時間 | 1,030 ms |
コンパイル使用メモリ | 75,484 KB |
最終ジャッジ日時 | 2025-02-11 06:47:13 |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 50 |
ソースコード
#pragma GCC optimize ( "O3" ) #pragma GCC optimize( "unroll-loops" ) #pragma GCC target ( "sse4.2,fma,avx2,popcnt,lzcnt,bmi2" ) #include <iostream> #include <stdio.h> #include <stdint.h> #include <cassert> #include <string> using namespace std; #define TYPE_OF( VAR ) remove_const<remove_reference<decltype( VAR )>::type >::type #define UNTIE ios_base::sync_with_stdio( false ); cin.tie( nullptr ) #define CEXPR( LL , BOUND , VALUE ) constexpr const LL BOUND = VALUE #define CIN( LL , A ) LL A; cin >> A #define ASSERT( A , MIN , MAX ) assert( ( MIN ) <= A && A <= ( MAX ) ) #define CIN_ASSERT( A , MIN , MAX ) CIN( TYPE_OF( MAX ) , A ); ASSERT( A , MIN , MAX ) #define FOR( VAR , INITIAL , FINAL_PLUS_ONE ) for( TYPE_OF( FINAL_PLUS_ONE ) VAR = INITIAL ; VAR < FINAL_PLUS_ONE ; VAR ++ ) #define QUIT return 0 #define COUT( ANSWER ) cout << ( ANSWER ) << "\n" #define RETURN( ANSWER ) COUT( ANSWER ); QUIT int main() { UNTIE; CEXPR( int , bound , 30 ); CIN_ASSERT( N , 0 , bound ); int T[bound][bound]; FOR( i , 0 , N ){ int ( &Ti )[bound] = T[i]; FOR( j , 0 , N ){ CIN_ASSERT( Tij , 0 , N - 1 ); Ti[j] = Tij; } } 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" ); }