結果

問題 No.2561 みんな大好きmod 998
ユーザー Keitaro NaruseKeitaro Naruse
提出日時 2023-12-02 16:20:13
言語 C++17
(gcc 12.3.0 + boost 1.83.0)
結果
AC  
実行時間 61 ms / 4,000 ms
コード長 1,544 bytes
コンパイル時間 776 ms
コンパイル使用メモリ 73,960 KB
実行使用メモリ 6,944 KB
最終ジャッジ日時 2024-09-26 20:08:56
合計ジャッジ時間 2,805 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
6,816 KB
testcase_01 AC 5 ms
6,940 KB
testcase_02 AC 2 ms
6,940 KB
testcase_03 AC 60 ms
6,940 KB
testcase_04 AC 61 ms
6,944 KB
testcase_05 AC 61 ms
6,940 KB
testcase_06 AC 61 ms
6,944 KB
testcase_07 AC 2 ms
6,944 KB
testcase_08 AC 2 ms
6,940 KB
testcase_09 AC 2 ms
6,944 KB
testcase_10 AC 2 ms
6,940 KB
testcase_11 AC 11 ms
6,940 KB
testcase_12 AC 2 ms
6,944 KB
testcase_13 AC 2 ms
6,944 KB
testcase_14 AC 2 ms
6,944 KB
testcase_15 AC 60 ms
6,940 KB
testcase_16 AC 2 ms
6,940 KB
testcase_17 AC 2 ms
6,944 KB
testcase_18 AC 2 ms
6,940 KB
testcase_19 AC 44 ms
6,940 KB
testcase_20 AC 2 ms
6,940 KB
testcase_21 AC 2 ms
6,940 KB
testcase_22 AC 2 ms
6,940 KB
testcase_23 AC 2 ms
6,940 KB
testcase_24 AC 2 ms
6,944 KB
testcase_25 AC 2 ms
6,940 KB
testcase_26 AC 13 ms
6,944 KB
testcase_27 AC 60 ms
6,940 KB
testcase_28 AC 17 ms
6,944 KB
testcase_29 AC 6 ms
6,944 KB
testcase_30 AC 17 ms
6,940 KB
testcase_31 AC 32 ms
6,940 KB
testcase_32 AC 8 ms
6,944 KB
testcase_33 AC 7 ms
6,944 KB
testcase_34 AC 61 ms
6,940 KB
testcase_35 AC 6 ms
6,944 KB
testcase_36 AC 6 ms
6,944 KB
testcase_37 AC 4 ms
6,944 KB
testcase_38 AC 11 ms
6,944 KB
testcase_39 AC 16 ms
6,940 KB
testcase_40 AC 17 ms
6,940 KB
testcase_41 AC 11 ms
6,944 KB
testcase_42 AC 17 ms
6,940 KB
testcase_43 AC 4 ms
6,940 KB
testcase_44 AC 8 ms
6,944 KB
testcase_45 AC 44 ms
6,944 KB
testcase_46 AC 6 ms
6,940 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

/**
 * @file 2561.cpp
 * @brief yukicoder No.2561 みんな大好きmod 998
 * @author Keitaro Naruse
 * @date 2023-12-02
 * @copyright MIT License
 * @details https://yukicoder.me/problems/no/2561
 * */

// # Solution

#include <iostream>
#include <vector>

template < class T >
std::ostream& operator<<( std::ostream& os, const std::vector< T >& v ) {
    for( auto it = v.begin( ); it != v.end( ); it++ ) {
        os << *it << ( it == --v.end( ) ? "" : " " );
    }
    return os;
}

int dfs( int k, int from, std::vector< int >& indicies, int N, int K, const std::vector< int >& A ) {
    if( k == K ) {
        // std::cerr << indicies << std::endl;
        long long sum = 0LL;
        for( int i = 0; i < K; i++ ) {
            sum += A.at( indicies.at( i ) );
        }
        if( sum % 998244353LL <= sum % 998LL ) {
            return 1;
        }
        return 0;
    }
    int count = 0;
    for( int i = from; i < N; i++ ) {
        indicies.at( k ) = i;
        count += dfs( k + 1, i + 1, indicies, N, K, A );
    }
    return count;
}

int main( ) {
    //  Read N = [ 1, 28 ], K = min( 8, N )
    int N, K;
    std::cin >> N >> K;
    //  Read Ai = [ 0, 10^9 ]
    std::vector< int > A( N, 0 );
    for( int i = 0; i < N; i++ ) {
        std::cin >> A.at( i );
    }

    //  Main::Preprocess
    //  Main::Find a solution
    std::vector< int > indicies( K, 0 );
    int answer = dfs( 0, 0, indicies, N, K, A ) % 998;

    //  Main::Output a solution
    std::cout << answer << std::endl;

    //  Finalize
    return 0;
}
0