Submission #1128915
Source Code Expand
#include <cstdio> #include <algorithm> #define repeat(i,n) for (int i = 0; i < (n); ++i) #define repeat_from(i,m,n) for (int i = (m); i < (n); ++i) #define repeat_reverse(i,n) for (int i = (n)-1; (i) >= 0; --(i)) typedef long long ll; using namespace std; #define MAX_N 2000 #define MAX_M 2000 const int mod = 1000000007; int a[MAX_N]; int dpl[MAX_N+1][MAX_M+1]; int dpr[MAX_N+1][MAX_M+1]; ll dpacc[MAX_M+2]; int main() { // input int n, m, q; scanf("%d%d%d", &n, &m, &q); repeat (i,n) scanf("%d", &a[i]); // prepare dpl[0][0] = 1; repeat_from (i,1,n+1) { dpacc[0] = 0; repeat (j,m+1) dpacc[j+1] = dpacc[j] + dpl[i-1][j]; repeat (j,m+1) dpl[i][j] = (dpacc[j+1] - dpacc[max(0, j-a[i-1])]) % mod; } dpr[n][0] = 1; repeat_reverse (i,n) { dpacc[0] = 0; repeat (j,m+1) dpacc[j+1] = dpacc[j] + dpr[i+1][j]; repeat (j,m+1) dpr[i][j] = (dpacc[j+1] - dpacc[max(0, j-a[i])]) % mod; } repeat (i,n+1) { reverse(dpr[i], dpr[i]+MAX_M+1); } // query repeat (query,q) { int k, x; scanf("%d%d", &k, &x); -- k; ll acc = 0; int *l = dpl[k]; int *r = dpr[k+1] + MAX_M-m+x; int j = 0; for (; j < m+1-x - 16; j += 16) { acc += l[j+ 0] *(ll) r[j+ 0] % mod; acc += l[j+ 1] *(ll) r[j+ 1] % mod; acc += l[j+ 2] *(ll) r[j+ 2] % mod; acc += l[j+ 3] *(ll) r[j+ 3] % mod; acc += l[j+ 4] *(ll) r[j+ 4] % mod; acc += l[j+ 5] *(ll) r[j+ 5] % mod; acc += l[j+ 6] *(ll) r[j+ 6] % mod; acc += l[j+ 7] *(ll) r[j+ 7] % mod; acc += l[j+ 8] *(ll) r[j+ 8] % mod; acc += l[j+ 9] *(ll) r[j+ 9] % mod; acc += l[j+10] *(ll) r[j+10] % mod; acc += l[j+11] *(ll) r[j+11] % mod; acc += l[j+12] *(ll) r[j+12] % mod; acc += l[j+13] *(ll) r[j+13] % mod; acc += l[j+14] *(ll) r[j+14] % mod; acc += l[j+15] *(ll) r[j+15] % mod; } for (; j < m+1-x; ++ j) { acc += l[j] *(ll) r[j] % mod; } printf("%lld\n", acc % mod); } return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - 注文の多い高橋商店 |
User | kimiyuki |
Language | C++14 (Clang 3.8.0) |
Score | 100 |
Code Size | 2181 Byte |
Status | AC |
Exec Time | 1732 ms |
Memory | 36352 KB |
Judge Result
Set Name | Sample | Subtask1 | Subtask2 | Subtask3 | Subtask4 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 10 / 10 | 20 / 20 | 50 / 50 | 20 / 20 | ||||||||||
Status |
|
|
|
|
|
Set Name | Test Cases |
---|---|
Sample | sample_01.txt, sample_02.txt |
Subtask1 | sample_01.txt, sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt |
Subtask2 | sample_01.txt, sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt |
Subtask3 | sample_01.txt, sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask3_01.txt, subtask3_02.txt, subtask3_03.txt |
Subtask4 | sample_01.txt, sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask3_01.txt, subtask3_02.txt, subtask3_03.txt, subtask4_01.txt, subtask4_02.txt, subtask4_03.txt, subtask4_04.txt, subtask4_05.txt, subtask4_06.txt, subtask4_07.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
sample_01.txt | AC | 2 ms | 2304 KB |
sample_02.txt | AC | 2 ms | 2304 KB |
subtask1_01.txt | AC | 2 ms | 2304 KB |
subtask1_02.txt | AC | 2 ms | 2304 KB |
subtask1_03.txt | AC | 2 ms | 2304 KB |
subtask1_04.txt | AC | 2 ms | 2560 KB |
subtask1_05.txt | AC | 2 ms | 4736 KB |
subtask1_06.txt | AC | 3 ms | 4736 KB |
subtask1_07.txt | AC | 2 ms | 4736 KB |
subtask1_08.txt | AC | 2 ms | 4736 KB |
subtask2_01.txt | AC | 17 ms | 5248 KB |
subtask2_02.txt | AC | 44 ms | 5760 KB |
subtask2_03.txt | AC | 30 ms | 5632 KB |
subtask3_01.txt | AC | 19 ms | 18688 KB |
subtask3_02.txt | AC | 36 ms | 31616 KB |
subtask3_03.txt | AC | 33 ms | 31616 KB |
subtask4_01.txt | AC | 1107 ms | 31104 KB |
subtask4_02.txt | AC | 1390 ms | 36352 KB |
subtask4_03.txt | AC | 139 ms | 32256 KB |
subtask4_04.txt | AC | 1530 ms | 3328 KB |
subtask4_05.txt | AC | 1011 ms | 36352 KB |
subtask4_06.txt | AC | 1732 ms | 32512 KB |
subtask4_07.txt | AC | 188 ms | 36096 KB |