# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
496186 | 2021-12-21T01:01:08 Z | model_code | Magneti (COCI21_magneti) | C++17 | 109 ms | 6320 KB |
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N=55; const int L=1e4+5; const int MOD=1e9+7; int n, l; int r[N]; int dp[2][N][L]; int pas[L+N][N]; int mul(int a, int b) { return (ll)a*b%MOD; } int add(int a, int b) { return (a+b)%MOD; } void load() { scanf("%d %d", &n, &l); for (int i=1; i<=n; ++i) scanf("%d", r+i); sort(r+1, r+n+1); } void pascal() { for (int i=0; i<=l+n; ++i) pas[i][0]=1; for (int i=1; i<=l; ++i) for (int j=1; j<=min(n, i); ++j) pas[i][j]=add(pas[i-1][j], pas[i-1][j-1]); } int main() { load(); pascal(); int x=0; dp[0][0][0]=1; for (int i=1; i<=n; ++i) { x^=1; dp[x][0][0]=0; int R=r[i]; for (int j=1; j<=i; ++j) { for (int k=1; k<=l; ++k) { dp[x][j][k]=dp[!x][j-1][k-1]; if (k>=R) dp[x][j][k]=add(dp[x][j][k], mul(dp[!x][j][k-R], 2*j)); if (k>=2*R-1) dp[x][j][k]=add(dp[x][j][k], mul(dp[!x][j+1][k-2*R+1], j*(j+1))); } } } int sol=0; for (int i=1; i<=l; ++i) sol=add(sol, mul(dp[x][1][i], pas[l-i+n][n])); printf("%d", sol); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 109 ms | 6276 KB | Output is correct |
2 | Correct | 1 ms | 716 KB | Output is correct |
3 | Correct | 9 ms | 2764 KB | Output is correct |
4 | Correct | 2 ms | 2636 KB | Output is correct |
5 | Correct | 7 ms | 1484 KB | Output is correct |
6 | Correct | 32 ms | 4428 KB | Output is correct |
7 | Correct | 18 ms | 3736 KB | Output is correct |
8 | Correct | 1 ms | 844 KB | Output is correct |
9 | Correct | 6 ms | 2736 KB | Output is correct |
10 | Correct | 1 ms | 972 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 6 ms | 3148 KB | Output is correct |
2 | Correct | 1 ms | 1484 KB | Output is correct |
3 | Correct | 6 ms | 3148 KB | Output is correct |
4 | Correct | 2 ms | 2124 KB | Output is correct |
5 | Correct | 6 ms | 3148 KB | Output is correct |
6 | Correct | 1 ms | 1484 KB | Output is correct |
7 | Correct | 6 ms | 3148 KB | Output is correct |
8 | Correct | 1 ms | 588 KB | Output is correct |
9 | Correct | 2 ms | 1612 KB | Output is correct |
10 | Correct | 1 ms | 1228 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 588 KB | Output is correct |
2 | Correct | 1 ms | 460 KB | Output is correct |
3 | Correct | 2 ms | 588 KB | Output is correct |
4 | Correct | 1 ms | 596 KB | Output is correct |
5 | Correct | 1 ms | 604 KB | Output is correct |
6 | Correct | 0 ms | 472 KB | Output is correct |
7 | Correct | 1 ms | 600 KB | Output is correct |
8 | Correct | 1 ms | 472 KB | Output is correct |
9 | Correct | 1 ms | 472 KB | Output is correct |
10 | Correct | 1 ms | 472 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 109 ms | 6276 KB | Output is correct |
2 | Correct | 1 ms | 716 KB | Output is correct |
3 | Correct | 9 ms | 2764 KB | Output is correct |
4 | Correct | 2 ms | 2636 KB | Output is correct |
5 | Correct | 7 ms | 1484 KB | Output is correct |
6 | Correct | 32 ms | 4428 KB | Output is correct |
7 | Correct | 18 ms | 3736 KB | Output is correct |
8 | Correct | 1 ms | 844 KB | Output is correct |
9 | Correct | 6 ms | 2736 KB | Output is correct |
10 | Correct | 1 ms | 972 KB | Output is correct |
11 | Correct | 6 ms | 3148 KB | Output is correct |
12 | Correct | 1 ms | 1484 KB | Output is correct |
13 | Correct | 6 ms | 3148 KB | Output is correct |
14 | Correct | 2 ms | 2124 KB | Output is correct |
15 | Correct | 6 ms | 3148 KB | Output is correct |
16 | Correct | 1 ms | 1484 KB | Output is correct |
17 | Correct | 6 ms | 3148 KB | Output is correct |
18 | Correct | 1 ms | 588 KB | Output is correct |
19 | Correct | 2 ms | 1612 KB | Output is correct |
20 | Correct | 1 ms | 1228 KB | Output is correct |
21 | Correct | 2 ms | 588 KB | Output is correct |
22 | Correct | 1 ms | 460 KB | Output is correct |
23 | Correct | 2 ms | 588 KB | Output is correct |
24 | Correct | 1 ms | 596 KB | Output is correct |
25 | Correct | 1 ms | 604 KB | Output is correct |
26 | Correct | 0 ms | 472 KB | Output is correct |
27 | Correct | 1 ms | 600 KB | Output is correct |
28 | Correct | 1 ms | 472 KB | Output is correct |
29 | Correct | 1 ms | 472 KB | Output is correct |
30 | Correct | 1 ms | 472 KB | Output is correct |
31 | Correct | 105 ms | 6284 KB | Output is correct |
32 | Correct | 68 ms | 4688 KB | Output is correct |
33 | Correct | 105 ms | 6304 KB | Output is correct |
34 | Correct | 21 ms | 3332 KB | Output is correct |
35 | Correct | 101 ms | 6312 KB | Output is correct |
36 | Correct | 7 ms | 2648 KB | Output is correct |
37 | Correct | 106 ms | 6280 KB | Output is correct |
38 | Correct | 17 ms | 1652 KB | Output is correct |
39 | Correct | 100 ms | 6268 KB | Output is correct |
40 | Correct | 34 ms | 4396 KB | Output is correct |
41 | Correct | 104 ms | 6212 KB | Output is correct |
42 | Correct | 1 ms | 972 KB | Output is correct |
43 | Correct | 102 ms | 6212 KB | Output is correct |
44 | Correct | 10 ms | 2764 KB | Output is correct |
45 | Correct | 99 ms | 6320 KB | Output is correct |
46 | Correct | 2 ms | 2380 KB | Output is correct |
47 | Correct | 10 ms | 3904 KB | Output is correct |
48 | Correct | 4 ms | 1740 KB | Output is correct |
49 | Correct | 3 ms | 2520 KB | Output is correct |
50 | Correct | 1 ms | 460 KB | Output is correct |