# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
747480 | 2023-05-24T08:16:14 Z | Desh03 | Horses (IOI15_horses) | C++17 | 261 ms | 37616 KB |
#include "horses.h" #include <bits/stdc++.h> using namespace std; const int mod = 1000000007; vector<int> x, y; int n; struct segtree1 { vector<double> st, lz; vector<int> id; int sz; void init(vector<double> a) { sz = a.size(); while (sz & sz - 1) ++sz; st.resize(sz << 1), lz.resize(sz << 1), id.resize(sz << 1); for (int i = sz; i < (sz << 1); i++) id[i] = i - sz; for (int i = 0; i < a.size(); i++) st[i + sz] = a[i] + log2(y[i]); for (int i = sz - 1; i; i--) pull(i); } void pull(int v) { if (st[v << 1] >= st[v << 1 | 1]) { st[v] = st[v << 1], id[v] = id[v << 1]; } else { st[v] = st[v << 1 | 1], id[v] = id[v << 1 | 1]; } } void push(int v) { st[v << 1] += lz[v]; st[v << 1 | 1] += lz[v]; lz[v << 1] += lz[v]; lz[v << 1 | 1] += lz[v]; lz[v] = 0; } void updx(int v, int l, int r, int ql, int qr, double x) { if (l > qr || r < ql) return; if (l >= ql && r <= qr) { st[v] += x, lz[v] += x; return; } if (lz[v] != 0) push(v); int m = l + r >> 1; updx(v << 1, l, m, ql, qr, x); updx(v << 1 | 1, m + 1, r, ql, qr, x); pull(v); } void updy(int v, int l, int r, int u, double y) { if (l == r) { st[v] += y; return; } if (lz[v] != 0) push(v); int m = l + r >> 1; if (u <= m) updy(v << 1, l, m, u, y); else updy(v << 1 | 1, m + 1, r, u, y); pull(v); } void updx(int l, int r, double x) { updx(1, 0, sz - 1, l, r, x); } void updy(int u, double y) { updy(1, 0, sz - 1, u, y); } } st1; struct segtree2 { vector<int> st; int sz; void init(int n) { sz = n; st.resize(sz << 1); } void upd(int id, int x) { for (st[id += sz] = x; id >>= 1;) st[id] = 1LL * st[id << 1] * st[id << 1 | 1] % mod; } int qry(int l, int r) { int s = 1; for (l += sz, r += sz + 1; l < r; l >>= 1, r >>= 1) { if (l & 1) s = 1LL * s * st[l++] % mod; if (r & 1) s = 1LL * s * st[--r] % mod; } return s; } } st2; int init(int N, int X[], int Y[]) { n = N, x.resize(n), y.resize(n); for (int i = 0; i < n; i++) x[i] = X[i], y[i] = Y[i]; vector<double> p(n); p[0] = log2(x[0]); for (int i = 1; i < n; i++) p[i] = p[i - 1] + log2(x[i]); st1.init(p); st2.init(n); for (int i = 0; i < n; i++) st2.upd(i, x[i]); return 1LL * st2.qry(0, st1.id[1]) * y[st1.id[1]] % mod; } int updateX(int pos, int val) { st1.updx(pos, n - 1, log2(val) - log2(x[pos])); st2.upd(pos, val); x[pos] = val; return 1LL * st2.qry(0, st1.id[1]) * y[st1.id[1]] % mod; } int updateY(int pos, int val) { st1.updy(pos, log2(val) - log2(y[pos])); y[pos] = val; return 1LL * st2.qry(0, st1.id[1]) * y[st1.id[1]] % mod; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 212 KB | Output is correct |
2 | Correct | 1 ms | 212 KB | Output is correct |
3 | Correct | 1 ms | 212 KB | Output is correct |
4 | Correct | 1 ms | 212 KB | Output is correct |
5 | Correct | 1 ms | 212 KB | Output is correct |
6 | Correct | 0 ms | 212 KB | Output is correct |
7 | Correct | 0 ms | 212 KB | Output is correct |
8 | Correct | 1 ms | 212 KB | Output is correct |
9 | Correct | 0 ms | 212 KB | Output is correct |
10 | Correct | 0 ms | 212 KB | Output is correct |
11 | Correct | 0 ms | 212 KB | Output is correct |
12 | Correct | 0 ms | 212 KB | Output is correct |
13 | Correct | 0 ms | 212 KB | Output is correct |
14 | Correct | 0 ms | 212 KB | Output is correct |
15 | Correct | 0 ms | 212 KB | Output is correct |
16 | Correct | 1 ms | 212 KB | Output is correct |
17 | Correct | 0 ms | 212 KB | Output is correct |
18 | Correct | 0 ms | 212 KB | Output is correct |
19 | Correct | 1 ms | 212 KB | Output is correct |
20 | Correct | 1 ms | 212 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 212 KB | Output is correct |
2 | Correct | 0 ms | 212 KB | Output is correct |
3 | Correct | 0 ms | 212 KB | Output is correct |
4 | Correct | 1 ms | 212 KB | Output is correct |
5 | Correct | 1 ms | 212 KB | Output is correct |
6 | Correct | 1 ms | 212 KB | Output is correct |
7 | Correct | 1 ms | 212 KB | Output is correct |
8 | Correct | 0 ms | 212 KB | Output is correct |
9 | Correct | 1 ms | 212 KB | Output is correct |
10 | Correct | 0 ms | 212 KB | Output is correct |
11 | Correct | 0 ms | 212 KB | Output is correct |
12 | Correct | 1 ms | 212 KB | Output is correct |
13 | Correct | 1 ms | 212 KB | Output is correct |
14 | Correct | 1 ms | 224 KB | Output is correct |
15 | Correct | 2 ms | 212 KB | Output is correct |
16 | Correct | 1 ms | 212 KB | Output is correct |
17 | Correct | 1 ms | 212 KB | Output is correct |
18 | Correct | 1 ms | 212 KB | Output is correct |
19 | Correct | 0 ms | 212 KB | Output is correct |
20 | Correct | 1 ms | 212 KB | Output is correct |
21 | Correct | 0 ms | 212 KB | Output is correct |
22 | Correct | 1 ms | 212 KB | Output is correct |
23 | Correct | 1 ms | 340 KB | Output is correct |
24 | Correct | 1 ms | 340 KB | Output is correct |
25 | Correct | 2 ms | 340 KB | Output is correct |
26 | Correct | 1 ms | 340 KB | Output is correct |
27 | Correct | 1 ms | 340 KB | Output is correct |
28 | Correct | 1 ms | 340 KB | Output is correct |
29 | Correct | 1 ms | 340 KB | Output is correct |
30 | Correct | 1 ms | 340 KB | Output is correct |
31 | Correct | 1 ms | 340 KB | Output is correct |
32 | Correct | 1 ms | 340 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 135 ms | 36496 KB | Output is correct |
2 | Correct | 240 ms | 36496 KB | Output is correct |
3 | Correct | 226 ms | 36496 KB | Output is correct |
4 | Correct | 261 ms | 36496 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 212 KB | Output is correct |
2 | Correct | 0 ms | 212 KB | Output is correct |
3 | Correct | 1 ms | 212 KB | Output is correct |
4 | Correct | 0 ms | 212 KB | Output is correct |
5 | Correct | 1 ms | 212 KB | Output is correct |
6 | Correct | 0 ms | 212 KB | Output is correct |
7 | Correct | 0 ms | 212 KB | Output is correct |
8 | Correct | 0 ms | 212 KB | Output is correct |
9 | Correct | 1 ms | 212 KB | Output is correct |
10 | Correct | 0 ms | 212 KB | Output is correct |
11 | Correct | 0 ms | 212 KB | Output is correct |
12 | Correct | 0 ms | 212 KB | Output is correct |
13 | Correct | 0 ms | 212 KB | Output is correct |
14 | Correct | 1 ms | 212 KB | Output is correct |
15 | Correct | 0 ms | 212 KB | Output is correct |
16 | Correct | 1 ms | 212 KB | Output is correct |
17 | Correct | 0 ms | 212 KB | Output is correct |
18 | Correct | 0 ms | 212 KB | Output is correct |
19 | Correct | 0 ms | 212 KB | Output is correct |
20 | Correct | 1 ms | 212 KB | Output is correct |
21 | Correct | 0 ms | 212 KB | Output is correct |
22 | Correct | 0 ms | 212 KB | Output is correct |
23 | Correct | 1 ms | 340 KB | Output is correct |
24 | Correct | 1 ms | 340 KB | Output is correct |
25 | Correct | 1 ms | 340 KB | Output is correct |
26 | Correct | 1 ms | 340 KB | Output is correct |
27 | Correct | 2 ms | 340 KB | Output is correct |
28 | Correct | 1 ms | 340 KB | Output is correct |
29 | Correct | 1 ms | 340 KB | Output is correct |
30 | Correct | 1 ms | 340 KB | Output is correct |
31 | Correct | 1 ms | 340 KB | Output is correct |
32 | Correct | 1 ms | 340 KB | Output is correct |
33 | Correct | 131 ms | 36540 KB | Output is correct |
34 | Correct | 122 ms | 36448 KB | Output is correct |
35 | Correct | 138 ms | 36488 KB | Output is correct |
36 | Correct | 134 ms | 36444 KB | Output is correct |
37 | Correct | 105 ms | 36492 KB | Output is correct |
38 | Correct | 110 ms | 36496 KB | Output is correct |
39 | Correct | 94 ms | 36496 KB | Output is correct |
40 | Correct | 112 ms | 36452 KB | Output is correct |
41 | Correct | 95 ms | 36440 KB | Output is correct |
42 | Correct | 95 ms | 36464 KB | Output is correct |
43 | Correct | 108 ms | 36488 KB | Output is correct |
44 | Correct | 113 ms | 37408 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 212 KB | Output is correct |
2 | Correct | 0 ms | 212 KB | Output is correct |
3 | Correct | 0 ms | 212 KB | Output is correct |
4 | Correct | 1 ms | 212 KB | Output is correct |
5 | Correct | 0 ms | 212 KB | Output is correct |
6 | Correct | 0 ms | 212 KB | Output is correct |
7 | Correct | 1 ms | 212 KB | Output is correct |
8 | Correct | 0 ms | 212 KB | Output is correct |
9 | Correct | 0 ms | 212 KB | Output is correct |
10 | Correct | 1 ms | 212 KB | Output is correct |
11 | Correct | 0 ms | 212 KB | Output is correct |
12 | Correct | 0 ms | 212 KB | Output is correct |
13 | Correct | 0 ms | 212 KB | Output is correct |
14 | Correct | 0 ms | 212 KB | Output is correct |
15 | Correct | 0 ms | 212 KB | Output is correct |
16 | Correct | 0 ms | 212 KB | Output is correct |
17 | Correct | 1 ms | 212 KB | Output is correct |
18 | Correct | 0 ms | 212 KB | Output is correct |
19 | Correct | 1 ms | 212 KB | Output is correct |
20 | Correct | 0 ms | 212 KB | Output is correct |
21 | Correct | 1 ms | 212 KB | Output is correct |
22 | Correct | 0 ms | 212 KB | Output is correct |
23 | Correct | 1 ms | 340 KB | Output is correct |
24 | Correct | 2 ms | 340 KB | Output is correct |
25 | Correct | 1 ms | 340 KB | Output is correct |
26 | Correct | 1 ms | 340 KB | Output is correct |
27 | Correct | 1 ms | 340 KB | Output is correct |
28 | Correct | 1 ms | 340 KB | Output is correct |
29 | Correct | 1 ms | 340 KB | Output is correct |
30 | Correct | 1 ms | 340 KB | Output is correct |
31 | Correct | 1 ms | 340 KB | Output is correct |
32 | Correct | 1 ms | 340 KB | Output is correct |
33 | Correct | 139 ms | 36472 KB | Output is correct |
34 | Correct | 229 ms | 36440 KB | Output is correct |
35 | Correct | 195 ms | 36504 KB | Output is correct |
36 | Correct | 240 ms | 36448 KB | Output is correct |
37 | Correct | 112 ms | 36448 KB | Output is correct |
38 | Correct | 112 ms | 36496 KB | Output is correct |
39 | Correct | 137 ms | 36556 KB | Output is correct |
40 | Correct | 130 ms | 36496 KB | Output is correct |
41 | Correct | 100 ms | 36468 KB | Output is correct |
42 | Correct | 111 ms | 36612 KB | Output is correct |
43 | Correct | 96 ms | 36488 KB | Output is correct |
44 | Correct | 112 ms | 36488 KB | Output is correct |
45 | Correct | 92 ms | 36496 KB | Output is correct |
46 | Correct | 94 ms | 36488 KB | Output is correct |
47 | Correct | 109 ms | 36428 KB | Output is correct |
48 | Correct | 106 ms | 37392 KB | Output is correct |
49 | Correct | 206 ms | 37392 KB | Output is correct |
50 | Correct | 205 ms | 37452 KB | Output is correct |
51 | Correct | 176 ms | 37140 KB | Output is correct |
52 | Correct | 182 ms | 37132 KB | Output is correct |
53 | Correct | 203 ms | 37356 KB | Output is correct |
54 | Correct | 183 ms | 37512 KB | Output is correct |
55 | Correct | 164 ms | 37328 KB | Output is correct |
56 | Correct | 195 ms | 37504 KB | Output is correct |
57 | Correct | 127 ms | 37392 KB | Output is correct |
58 | Correct | 141 ms | 37476 KB | Output is correct |
59 | Correct | 111 ms | 37616 KB | Output is correct |