結果
| 問題 | 
                            No.1043 直列大学
                             | 
                    
| コンテスト | |
| ユーザー | 
                             259_Momone
                         | 
                    
| 提出日時 | 2020-05-01 21:51:45 | 
| 言語 | C++14  (gcc 13.3.0 + boost 1.87.0)  | 
                    
| 結果 | 
                             
                                WA
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 997 bytes | 
| コンパイル時間 | 2,260 ms | 
| コンパイル使用メモリ | 170,576 KB | 
| 実行使用メモリ | 5,248 KB | 
| 最終ジャッジ日時 | 2024-12-25 03:36:13 | 
| 合計ジャッジ時間 | 3,559 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge5 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 12 WA * 16 | 
ソースコード
#include<bits/stdc++.h>
int main(){
    using namespace std;
    constexpr unsigned long MOD = 1000000007;
    unsigned long N, M, Sv{1}, Sr{1};
    cin >> N >> M;
    vector<unsigned long> dp1{1}, dp2{1};
    dp1.reserve(50000);
    dp2.reserve(50000);
    for(unsigned long i{0}, V; i < N; ++i){
        cin >> V;
        dp1.resize(Sv += V);
        for(unsigned long j{Sv}; j-- > V; )(dp1[j] += dp1[j - V]) %= MOD;
    }
    for(unsigned long i{0}, R; i < M; ++i){
        cin >> R;
        dp2.resize(Sr += R);
        for(unsigned long j{Sr}; j-- > R; )(dp2[j] += dp2[j - R]) %= MOD;
    }
    partial_sum(dp1.rbegin(), dp1.rend(), dp1.rbegin());
    const auto& access = [&Sv, &dp1](long i) -> unsigned long {
        if(i < Sv)return dp1[i] %= MOD;
        return 0;
    };
    unsigned long A, B;
    cin >> A >> B;
    unsigned long ans{0};
    for(unsigned long i{1}; i < Sr; ++i)ans += dp2[i] * (access(A * i) + MOD - access(B * i + 1)) % MOD;
    cout << ans << endl;
    return 0;
}
            
            
            
        
            
259_Momone