Submission #55037951


Source Code Expand

#include <bits/stdc++.h>
#include <atcoder/modint>
using namespace std;
using mint = atcoder::modint1000000007;

int main(){
    // input
    int N;
    cin >> N;
    vector<int> A(N);
    for (auto &a : A) cin >> a;
    
    // init
    const int L = 1010; // non - negative
    const int R = 12;
    vector<mint> dp1(L * 2), dp2(R * 2);
    dp1[L] = 1;
    
    // calc
    for (int i = 0; i < N; i++){
        // not in A[i]
        auto n_dp1 = dp1;
        for (int j = 0; j < L * 2; j++){
            if (j == L || dp1[j] == 0) continue;
            // in A[i]
            n_dp1[j + A[i]] += dp1[j];
        }
        // j = 0
        if (A[i]){
            n_dp1[L + A[i]] += dp1[L] - dp2[A[i] + R];
            dp2[A[i] + R] = dp1[L];
        }
        // dp1[i] <- dp1[i + 1]
        swap(dp1, n_dp1);
    }
    
    // output
    mint ans = 0;
    for (auto x : dp1) ans += x;
    for (auto x : dp2) ans -= x;
    cout << ans.val() << "\n";
}

Submission Info

Submission Time
Task C - Subsequence and Prefix Sum
User potato167
Language C++ 17 (gcc 12.2)
Score 600
Code Size 993 Byte
Status AC
Exec Time 1 ms
Memory 3688 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 4
AC × 30
Set Name Test Cases
Sample 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt, 00-sample-004.txt
All 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt, 00-sample-004.txt, 01-001.txt, 01-002.txt, 01-003.txt, 01-004.txt, 01-005.txt, 01-006.txt, 01-007.txt, 01-008.txt, 01-009.txt, 01-010.txt, 01-011.txt, 01-012.txt, 01-013.txt, 01-014.txt, 01-015.txt, 01-016.txt, 01-017.txt, 01-018.txt, 01-019.txt, 01-020.txt, 01-021.txt, 01-022.txt, 01-023.txt, 01-024.txt, 01-025.txt, 01-026.txt
Case Name Status Exec Time Memory
00-sample-001.txt AC 1 ms 3688 KiB
00-sample-002.txt AC 1 ms 3552 KiB
00-sample-003.txt AC 1 ms 3620 KiB
00-sample-004.txt AC 1 ms 3416 KiB
01-001.txt AC 1 ms 3552 KiB
01-002.txt AC 1 ms 3616 KiB
01-003.txt AC 1 ms 3540 KiB
01-004.txt AC 1 ms 3500 KiB
01-005.txt AC 1 ms 3492 KiB
01-006.txt AC 1 ms 3544 KiB
01-007.txt AC 1 ms 3552 KiB
01-008.txt AC 1 ms 3616 KiB
01-009.txt AC 1 ms 3488 KiB
01-010.txt AC 1 ms 3548 KiB
01-011.txt AC 1 ms 3532 KiB
01-012.txt AC 1 ms 3532 KiB
01-013.txt AC 1 ms 3552 KiB
01-014.txt AC 1 ms 3504 KiB
01-015.txt AC 1 ms 3464 KiB
01-016.txt AC 1 ms 3460 KiB
01-017.txt AC 1 ms 3556 KiB
01-018.txt AC 1 ms 3552 KiB
01-019.txt AC 1 ms 3416 KiB
01-020.txt AC 1 ms 3508 KiB
01-021.txt AC 1 ms 3552 KiB
01-022.txt AC 1 ms 3552 KiB
01-023.txt AC 1 ms 3620 KiB
01-024.txt AC 1 ms 3624 KiB
01-025.txt AC 1 ms 3504 KiB
01-026.txt AC 1 ms 3688 KiB