// 入力フォーマットチェック #include using namespace std; using ll = long long; #define TYPE_OF( VAR ) remove_const::type >::type #define GETLINE( A ) string A; getline( cin , A ) #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 RETURN( ANSWER ) cout << ( ANSWER ) << "\n"; QUIT #define CHECK_REDUNDANT_INPUT string VARIABLE_FOR_CHECK_REDUNDANT_INPUT = ""; getline( cin , VARIABLE_FOR_CHECK_REDUNDANT_INPUT ); assert( VARIABLE_FOR_CHECK_REDUNDANT_INPUT == "" ); assert( ! cin ); // |N| < BOUNDを満たすNをSから構築 #define STOI( S , N , BOUND ) ll N = 0; { bool VARIABLE_FOR_POSITIVITY_FOR_STOI = true; assert( S != "" ); if( S.substr( 0 , 1 ) == "-" ){ VARIABLE_FOR_POSITIVITY_FOR_STOI = false; S = S.substr( 1 ); assert( S != "" ); } assert( S.substr( 0 , 1 ) != " " ); while( S == "" ? false : S.substr( 0 , 1 ) != " " ){ assert( N < BOUND / 10 ? true : N == BOUND / 10 && stoi( S.substr( 0 , 1 ) ) < BOUND % 10 ); N = N * 10 + stoi( S.substr( 0 , 1 ) ); S = S.substr( 1 ); } if( ! VARIABLE_FOR_POSITIVITY_FOR_STOI ){ N *= -1; } if( S != "" ){ S = S.substr( 1 ); } } int main() { constexpr const int bound_N = 100001; GETLINE( N_str ); STOI( N_str , N , bound_N ) GETLINE( K ); FOR( i , 0 , N ){ GETLINE( S ); } CHECK_REDUNDANT_INPUT; RETURN( "入力フォーマットチェック" ); }