# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
747470 | 2023-05-24T08:09:54 Z | Desh03 | 말 (IOI15_horses) | C++17 | 275 ms | 47500 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; } 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; } 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
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 212 KB | Output is correct |
2 | Correct | 1 ms | 300 KB | Output is correct |
3 | Correct | 1 ms | 296 KB | Output is correct |
4 | Correct | 0 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 | 1 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 | 1 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 | 212 KB | Output is correct |
15 | Correct | 1 ms | 296 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 | 300 KB | Output is correct |
19 | Correct | 1 ms | 300 KB | Output is correct |
20 | Correct | 0 ms | 212 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 296 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 | 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 | 1 ms | 300 KB | Output is correct |
12 | Correct | 0 ms | 304 KB | Output is correct |
13 | Correct | 0 ms | 212 KB | Output is correct |
14 | Correct | 1 ms | 212 KB | Output is correct |
15 | Correct | 1 ms | 212 KB | Output is correct |
16 | Correct | 1 ms | 300 KB | Output is correct |
17 | Correct | 0 ms | 212 KB | Output is correct |
18 | Correct | 1 ms | 296 KB | Output is correct |
19 | Correct | 1 ms | 212 KB | Output is correct |
20 | Correct | 1 ms | 212 KB | Output is correct |
21 | Correct | 1 ms | 212 KB | Output is correct |
22 | Correct | 1 ms | 296 KB | Output is correct |
23 | Correct | 1 ms | 340 KB | Output is correct |
24 | Correct | 1 ms | 312 KB | Output is correct |
25 | Correct | 1 ms | 340 KB | Output is correct |
26 | Correct | 1 ms | 312 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 |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 139 ms | 38236 KB | Output is correct |
2 | Correct | 267 ms | 47444 KB | Output is correct |
3 | Correct | 218 ms | 38656 KB | Output is correct |
4 | Correct | 275 ms | 42424 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 212 KB | Output is correct |
2 | Correct | 1 ms | 300 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 | 300 KB | Output is correct |
6 | Correct | 1 ms | 212 KB | Output is correct |
7 | Correct | 1 ms | 300 KB | Output is correct |
8 | Correct | 0 ms | 212 KB | Output is correct |
9 | Correct | 1 ms | 212 KB | Output is correct |
10 | Correct | 1 ms | 212 KB | Output is correct |
11 | Correct | 1 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 | 212 KB | Output is correct |
15 | Correct | 1 ms | 212 KB | Output is correct |
16 | Correct | 1 ms | 300 KB | Output is correct |
17 | Correct | 1 ms | 212 KB | Output is correct |
18 | Correct | 1 ms | 304 KB | Output is correct |
19 | Correct | 1 ms | 212 KB | Output is correct |
20 | Correct | 1 ms | 212 KB | Output is correct |
21 | Correct | 1 ms | 212 KB | Output is correct |
22 | Correct | 1 ms | 300 KB | Output is correct |
23 | Correct | 1 ms | 388 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 | 2 ms | 340 KB | Output is correct |
28 | Correct | 1 ms | 340 KB | Output is correct |
29 | Correct | 1 ms | 308 KB | Output is correct |
30 | Correct | 1 ms | 340 KB | Output is correct |
31 | Correct | 1 ms | 340 KB | Output is correct |
32 | Correct | 2 ms | 340 KB | Output is correct |
33 | Correct | 122 ms | 40420 KB | Output is correct |
34 | Correct | 132 ms | 40420 KB | Output is correct |
35 | Correct | 140 ms | 47348 KB | Output is correct |
36 | Correct | 139 ms | 47300 KB | Output is correct |
37 | Correct | 102 ms | 38632 KB | Output is correct |
38 | Correct | 114 ms | 39496 KB | Output is correct |
39 | Correct | 97 ms | 38516 KB | Output is correct |
40 | Correct | 148 ms | 42376 KB | Output is correct |
41 | Correct | 97 ms | 38504 KB | Output is correct |
42 | Correct | 110 ms | 38536 KB | Output is correct |
43 | Correct | 138 ms | 42824 KB | Output is correct |
44 | Correct | 110 ms | 42840 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 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 | 1 ms | 212 KB | Output is correct |
7 | Correct | 1 ms | 296 KB | Output is correct |
8 | Correct | 1 ms | 212 KB | Output is correct |
9 | Correct | 1 ms | 212 KB | Output is correct |
10 | Correct | 1 ms | 212 KB | Output is correct |
11 | Correct | 1 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 | 212 KB | Output is correct |
15 | Correct | 1 ms | 212 KB | Output is correct |
16 | Correct | 1 ms | 300 KB | Output is correct |
17 | Correct | 2 ms | 212 KB | Output is correct |
18 | Correct | 1 ms | 212 KB | Output is correct |
19 | Correct | 1 ms | 212 KB | Output is correct |
20 | Correct | 1 ms | 212 KB | Output is correct |
21 | Correct | 1 ms | 212 KB | Output is correct |
22 | Correct | 1 ms | 300 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 | 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 | 3 ms | 312 KB | Output is correct |
32 | Correct | 1 ms | 340 KB | Output is correct |
33 | Correct | 146 ms | 38592 KB | Output is correct |
34 | Correct | 258 ms | 47484 KB | Output is correct |
35 | Correct | 204 ms | 38604 KB | Output is correct |
36 | Correct | 247 ms | 42496 KB | Output is correct |
37 | Correct | 115 ms | 40424 KB | Output is correct |
38 | Correct | 121 ms | 40416 KB | Output is correct |
39 | Correct | 139 ms | 47292 KB | Output is correct |
40 | Correct | 154 ms | 47276 KB | Output is correct |
41 | Correct | 99 ms | 38596 KB | Output is correct |
42 | Correct | 108 ms | 39500 KB | Output is correct |
43 | Correct | 96 ms | 38548 KB | Output is correct |
44 | Correct | 124 ms | 42384 KB | Output is correct |
45 | Correct | 97 ms | 38516 KB | Output is correct |
46 | Correct | 93 ms | 38556 KB | Output is correct |
47 | Correct | 112 ms | 42864 KB | Output is correct |
48 | Correct | 121 ms | 42884 KB | Output is correct |
49 | Correct | 230 ms | 40432 KB | Output is correct |
50 | Correct | 210 ms | 40436 KB | Output is correct |
51 | Correct | 197 ms | 47500 KB | Output is correct |
52 | Correct | 223 ms | 47456 KB | Output is correct |
53 | Correct | 209 ms | 38668 KB | Output is correct |
54 | Correct | 213 ms | 39532 KB | Output is correct |
55 | Correct | 168 ms | 38592 KB | Output is correct |
56 | Correct | 205 ms | 42500 KB | Output is correct |
57 | Correct | 150 ms | 38648 KB | Output is correct |
58 | Correct | 155 ms | 38652 KB | Output is correct |
59 | Correct | 109 ms | 42884 KB | Output is correct |