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 |
|
|
| 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 |