# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
22894 | 2017-04-30T09:11:28 Z | pichulia | Unifying Values (KRIII5_UV) | C++ | 26 ms | 3408 KB |
#include<stdio.h> #include<algorithm> #include<set> #include<map> #include<vector> using namespace std; #define I 16384 #define M 1000000007 typedef pair<long long int, int> pii; int n; long long int a[10009]; long long int s[10009]; long long int res; map<long long int, vector<int> > xx; set<long long int> ss; long long int ms[2 * I]; void update_ms(int i, long long int k) { ms[i + I] = k%M; i = i + I; i /= 2; while (i > 0) { ms[i] = (ms[i * 2] + ms[i * 2 + 1]) % M; i /= 2; } } long long int get_ms(int dep, int ql, int qr, int ll, int rr) { if (rr < ql || qr < ll) return 0; if (ql <= ll && rr <= qr) { return ms[dep]; } return (get_ms(dep * 2, ql, qr, ll, (ll + rr) / 2) + get_ms(dep * 2 + 1, ql, qr, (ll + rr) / 2 + 1, rr)) % M; } void process(long long int x) { int i, j, k, l; long long int m; if (s[n] == 0) m = -1; else { m = s[n] / x; if (m > n) return; if (m < 2) return; } int cur, nxt; cur = 0; nxt = 1; int si = n+2; for (i = 0; i < 2 * I; i++) ms[i] = 0; for (i = 1; i <= n; i++) { if (s[i] == x) { update_ms(i, 1); } } if (m > 1) { xx.clear(); for (i = 1; i <= n; i++) { if (s[i] % x == 0 && s[i]/x>0) { xx[s[i]].push_back(i); } } for (k = 2; k <= m; k++) { long long int cur = k*x; for (i = ((int)xx[cur].size()) - 1; i >= 0; i--) { long long int kk = get_ms(1, 0, xx[cur][i], 0, I - 1); update_ms(xx[cur][i], kk); } for (i = ((int)xx[cur-x].size()) - 1; i >= 0; i--) { update_ms(xx[cur-x][i], 0); } } res = (res + ms[n + I])%M; } else { int ss = 0; for (i = 1; i < n; i++) { if (s[i] == 0)ss++; } res = 1; for (i = 0; i < ss; i++) { res = (res * 2) % M; } res = (res - 1 + M) % M; } } int main() { int i, j, k, l; scanf("%d", &n); for (i = 1; i <= n; i++) { scanf("%lld", &a[i]); s[i] = s[i - 1] + a[i]; } res = 0; for (i = 1; i < n; i++) { if (s[n] == 0 && s[i] == 0) { if (ss.find(s[i]) != ss.end()) continue; ss.insert(s[i]); process(0); } else if (s[i] != 0 && s[n] % s[i] == 0 && s[n] / s[i] > 1) { if (ss.find(s[i]) != ss.end()) continue; ss.insert(s[i]); process(s[i]); } } printf("%lld\n", res); return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 2352 KB | Output is correct |
2 | Correct | 0 ms | 2352 KB | Output is correct |
3 | Correct | 0 ms | 2352 KB | Output is correct |
4 | Correct | 23 ms | 3408 KB | Output is correct |
5 | Correct | 26 ms | 3408 KB | Output is correct |
6 | Correct | 0 ms | 2352 KB | Output is correct |
7 | Correct | 9 ms | 2616 KB | Output is correct |
8 | Correct | 9 ms | 2616 KB | Output is correct |
9 | Correct | 6 ms | 2616 KB | Output is correct |
10 | Correct | 6 ms | 2484 KB | Output is correct |
11 | Correct | 6 ms | 2484 KB | Output is correct |
12 | Correct | 0 ms | 2352 KB | Output is correct |
13 | Correct | 16 ms | 2616 KB | Output is correct |
14 | Correct | 9 ms | 2616 KB | Output is correct |
15 | Correct | 9 ms | 2616 KB | Output is correct |
16 | Correct | 13 ms | 2484 KB | Output is correct |
17 | Correct | 6 ms | 2484 KB | Output is correct |
18 | Correct | 3 ms | 2352 KB | Output is correct |
19 | Correct | 0 ms | 2352 KB | Output is correct |
20 | Correct | 0 ms | 2352 KB | Output is correct |
21 | Correct | 0 ms | 2352 KB | Output is correct |
22 | Correct | 0 ms | 2352 KB | Output is correct |
23 | Correct | 0 ms | 2352 KB | Output is correct |
24 | Correct | 0 ms | 2352 KB | Output is correct |
25 | Correct | 0 ms | 2352 KB | Output is correct |
26 | Correct | 0 ms | 2352 KB | Output is correct |
27 | Correct | 0 ms | 2484 KB | Output is correct |
28 | Correct | 6 ms | 2484 KB | Output is correct |
29 | Correct | 9 ms | 2484 KB | Output is correct |
30 | Correct | 6 ms | 2484 KB | Output is correct |
31 | Correct | 9 ms | 2484 KB | Output is correct |
32 | Correct | 13 ms | 2484 KB | Output is correct |
33 | Correct | 9 ms | 2484 KB | Output is correct |
34 | Correct | 6 ms | 2484 KB | Output is correct |
35 | Correct | 16 ms | 2484 KB | Output is correct |
36 | Correct | 16 ms | 2484 KB | Output is correct |
37 | Correct | 19 ms | 2484 KB | Output is correct |
38 | Correct | 19 ms | 2484 KB | Output is correct |
39 | Correct | 19 ms | 2484 KB | Output is correct |
40 | Correct | 13 ms | 2484 KB | Output is correct |
41 | Correct | 19 ms | 2484 KB | Output is correct |
42 | Correct | 9 ms | 2484 KB | Output is correct |
43 | Correct | 23 ms | 2484 KB | Output is correct |
44 | Correct | 13 ms | 2484 KB | Output is correct |
45 | Correct | 16 ms | 2484 KB | Output is correct |
46 | Correct | 19 ms | 2484 KB | Output is correct |
47 | Correct | 13 ms | 2484 KB | Output is correct |
48 | Correct | 16 ms | 2484 KB | Output is correct |
49 | Correct | 9 ms | 2484 KB | Output is correct |
50 | Correct | 16 ms | 2616 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 13 ms | 2616 KB | Output is correct |
2 | Correct | 6 ms | 2616 KB | Output is correct |
3 | Correct | 6 ms | 2616 KB | Output is correct |
4 | Correct | 3 ms | 2484 KB | Output is correct |
5 | Correct | 9 ms | 2484 KB | Output is correct |
6 | Correct | 3 ms | 2484 KB | Output is correct |
7 | Correct | 19 ms | 2616 KB | Output is correct |
8 | Correct | 9 ms | 2616 KB | Output is correct |
9 | Correct | 3 ms | 2484 KB | Output is correct |
10 | Correct | 0 ms | 2352 KB | Output is correct |
11 | Correct | 0 ms | 2352 KB | Output is correct |
12 | Correct | 0 ms | 2352 KB | Output is correct |
13 | Correct | 0 ms | 2352 KB | Output is correct |
14 | Correct | 3 ms | 2352 KB | Output is correct |
15 | Correct | 3 ms | 2352 KB | Output is correct |
16 | Correct | 3 ms | 2352 KB | Output is correct |
17 | Correct | 23 ms | 3408 KB | Output is correct |
18 | Correct | 26 ms | 3408 KB | Output is correct |
19 | Correct | 0 ms | 2352 KB | Output is correct |
20 | Correct | 3 ms | 2352 KB | Output is correct |
21 | Correct | 0 ms | 2352 KB | Output is correct |
22 | Correct | 3 ms | 2352 KB | Output is correct |
23 | Correct | 3 ms | 2352 KB | Output is correct |
24 | Correct | 3 ms | 2352 KB | Output is correct |
25 | Correct | 0 ms | 2352 KB | Output is correct |
26 | Correct | 0 ms | 2352 KB | Output is correct |
27 | Correct | 3 ms | 2484 KB | Output is correct |
28 | Correct | 6 ms | 2484 KB | Output is correct |
29 | Correct | 6 ms | 2616 KB | Output is correct |
30 | Correct | 6 ms | 2616 KB | Output is correct |
31 | Correct | 3 ms | 2748 KB | Output is correct |
32 | Correct | 6 ms | 2484 KB | Output is correct |
33 | Correct | 0 ms | 2484 KB | Output is correct |
34 | Correct | 6 ms | 2484 KB | Output is correct |
35 | Correct | 6 ms | 2484 KB | Output is correct |
36 | Correct | 9 ms | 2484 KB | Output is correct |
37 | Correct | 6 ms | 2484 KB | Output is correct |
38 | Correct | 9 ms | 2484 KB | Output is correct |
39 | Correct | 9 ms | 2484 KB | Output is correct |
40 | Correct | 13 ms | 2484 KB | Output is correct |
41 | Correct | 16 ms | 2484 KB | Output is correct |
42 | Correct | 9 ms | 2484 KB | Output is correct |
43 | Correct | 9 ms | 2484 KB | Output is correct |
44 | Correct | 16 ms | 2484 KB | Output is correct |
45 | Correct | 13 ms | 2484 KB | Output is correct |
46 | Correct | 3 ms | 2352 KB | Output is correct |
47 | Correct | 6 ms | 2352 KB | Output is correct |
48 | Correct | 6 ms | 2352 KB | Output is correct |
49 | Correct | 9 ms | 2352 KB | Output is correct |
50 | Correct | 6 ms | 2352 KB | Output is correct |
51 | Correct | 3 ms | 2352 KB | Output is correct |
52 | Correct | 6 ms | 2352 KB | Output is correct |
53 | Correct | 3 ms | 2352 KB | Output is correct |
54 | Correct | 6 ms | 2352 KB | Output is correct |
55 | Correct | 3 ms | 2352 KB | Output is correct |
56 | Correct | 3 ms | 2352 KB | Output is correct |
57 | Correct | 6 ms | 2352 KB | Output is correct |
58 | Correct | 3 ms | 2352 KB | Output is correct |
59 | Correct | 3 ms | 2352 KB | Output is correct |
60 | Correct | 6 ms | 2352 KB | Output is correct |
61 | Correct | 3 ms | 2352 KB | Output is correct |
62 | Correct | 3 ms | 2352 KB | Output is correct |
63 | Correct | 3 ms | 2352 KB | Output is correct |
64 | Correct | 0 ms | 2352 KB | Output is correct |
65 | Correct | 3 ms | 2492 KB | Output is correct |
66 | Correct | 6 ms | 2352 KB | Output is correct |
67 | Correct | 3 ms | 2352 KB | Output is correct |
68 | Correct | 3 ms | 2488 KB | Output is correct |
69 | Correct | 6 ms | 2488 KB | Output is correct |
70 | Correct | 6 ms | 2352 KB | Output is correct |
71 | Correct | 6 ms | 2484 KB | Output is correct |
72 | Correct | 9 ms | 2352 KB | Output is correct |
73 | Correct | 13 ms | 2484 KB | Output is correct |
74 | Correct | 9 ms | 2352 KB | Output is correct |
75 | Correct | 13 ms | 2484 KB | Output is correct |
76 | Correct | 9 ms | 2484 KB | Output is correct |
77 | Correct | 16 ms | 2484 KB | Output is correct |
78 | Correct | 16 ms | 2484 KB | Output is correct |
79 | Correct | 19 ms | 2484 KB | Output is correct |
80 | Correct | 19 ms | 2484 KB | Output is correct |
81 | Correct | 16 ms | 2616 KB | Output is correct |
82 | Correct | 3 ms | 2352 KB | Output is correct |
83 | Correct | 9 ms | 2352 KB | Output is correct |
84 | Correct | 9 ms | 2484 KB | Output is correct |
85 | Correct | 9 ms | 2484 KB | Output is correct |
86 | Correct | 13 ms | 2484 KB | Output is correct |
87 | Correct | 16 ms | 2484 KB | Output is correct |
88 | Correct | 16 ms | 2484 KB | Output is correct |
89 | Correct | 23 ms | 2484 KB | Output is correct |
90 | Correct | 13 ms | 2484 KB | Output is correct |
91 | Correct | 0 ms | 2352 KB | Output is correct |
92 | Correct | 0 ms | 2352 KB | Output is correct |
93 | Correct | 0 ms | 2352 KB | Output is correct |
94 | Correct | 23 ms | 3408 KB | Output is correct |
95 | Correct | 26 ms | 3408 KB | Output is correct |
96 | Correct | 0 ms | 2352 KB | Output is correct |
97 | Correct | 9 ms | 2616 KB | Output is correct |
98 | Correct | 9 ms | 2616 KB | Output is correct |
99 | Correct | 6 ms | 2616 KB | Output is correct |
100 | Correct | 6 ms | 2484 KB | Output is correct |
101 | Correct | 6 ms | 2484 KB | Output is correct |
102 | Correct | 0 ms | 2352 KB | Output is correct |
103 | Correct | 16 ms | 2616 KB | Output is correct |
104 | Correct | 9 ms | 2616 KB | Output is correct |
105 | Correct | 9 ms | 2616 KB | Output is correct |
106 | Correct | 13 ms | 2484 KB | Output is correct |
107 | Correct | 6 ms | 2484 KB | Output is correct |
108 | Correct | 3 ms | 2352 KB | Output is correct |
109 | Correct | 0 ms | 2352 KB | Output is correct |
110 | Correct | 0 ms | 2352 KB | Output is correct |
111 | Correct | 0 ms | 2352 KB | Output is correct |
112 | Correct | 0 ms | 2352 KB | Output is correct |
113 | Correct | 0 ms | 2352 KB | Output is correct |
114 | Correct | 0 ms | 2352 KB | Output is correct |
115 | Correct | 0 ms | 2352 KB | Output is correct |
116 | Correct | 0 ms | 2352 KB | Output is correct |
117 | Correct | 0 ms | 2484 KB | Output is correct |
118 | Correct | 6 ms | 2484 KB | Output is correct |
119 | Correct | 9 ms | 2484 KB | Output is correct |
120 | Correct | 6 ms | 2484 KB | Output is correct |
121 | Correct | 9 ms | 2484 KB | Output is correct |
122 | Correct | 13 ms | 2484 KB | Output is correct |
123 | Correct | 9 ms | 2484 KB | Output is correct |
124 | Correct | 6 ms | 2484 KB | Output is correct |
125 | Correct | 16 ms | 2484 KB | Output is correct |
126 | Correct | 16 ms | 2484 KB | Output is correct |
127 | Correct | 19 ms | 2484 KB | Output is correct |
128 | Correct | 19 ms | 2484 KB | Output is correct |
129 | Correct | 19 ms | 2484 KB | Output is correct |
130 | Correct | 13 ms | 2484 KB | Output is correct |
131 | Correct | 19 ms | 2484 KB | Output is correct |
132 | Correct | 9 ms | 2484 KB | Output is correct |
133 | Correct | 23 ms | 2484 KB | Output is correct |
134 | Correct | 13 ms | 2484 KB | Output is correct |
135 | Correct | 16 ms | 2484 KB | Output is correct |
136 | Correct | 19 ms | 2484 KB | Output is correct |
137 | Correct | 13 ms | 2484 KB | Output is correct |
138 | Correct | 16 ms | 2484 KB | Output is correct |
139 | Correct | 9 ms | 2484 KB | Output is correct |
140 | Correct | 16 ms | 2616 KB | Output is correct |