diff --git a/BZOJ/2038/2038.cpp b/BZOJ/2038/2038.cpp new file mode 100644 index 00000000..93ff48de --- /dev/null +++ b/BZOJ/2038/2038.cpp @@ -0,0 +1,77 @@ +#include +#include +#include +#include +#include + +using std::cin; +using std::cout; +const char endl = '\n'; + +const int N = 50005; + +int n, m, a[N], c[N], t; +std::pair now, ans[N]; +std::vector> q; + +void add(int x) { + if (++c[x] > 1) { + now.first += c[x] * (c[x] - 1) - (c[x] - 1) * (c[x] - 2); + } +} + +void del(int x) { + if (--c[x]) { + now.first += c[x] * (c[x] - 1) - (c[x] + 1) * c[x]; + } +} + +int main() { + std::ios::sync_with_stdio(false); + cin.tie(nullptr); + + cin >> n >> m; + + t = sqrt(n); + + for (int i = 1; i <= n; i++) { + cin >> a[i]; + } + + for (int i = 1, l, r; i <= m; i++) { + cin >> l >> r; + + q.push_back(std::make_tuple(i, l, r)); + } + + std::sort(q.begin(), q.end(), [&](auto a, auto b) { + int p = std::get<1>(a) / t, + q = std::get<1>(b) / t; + + return p == q ? std::get<2>(a) < std::get<2>(b) : p < q; + }); + + int i = 0, j = 1, x, l, r; + for (auto e : q) { + std::tie(x, l, r) = e; + + if (l == r) { + ans[x] = std::make_pair(0, 1); + } else { + while (i < r) add(a[++i]); + while (i > r) del(a[i--]); + while (j < l) del(a[j++]); + while (j > l) add(a[--j]); + + now.second = 1ll * (r - l + 1) * (r - l); + int g = std::__gcd(now.first, now.second); + ans[x] = std::make_pair(now.first / g, now.second / g); + } + } + + for (int i = 1; i <= m; i++) { + cout << ans[i].first << '/' << ans[i].second << endl; + } + + return 0; +} diff --git a/BZOJ/2038/data/1.in b/BZOJ/2038/data/1.in new file mode 100644 index 00000000..7c00a49b --- /dev/null +++ b/BZOJ/2038/data/1.in @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29563ad333cc88939e650f664a5b085e71c1a397d5b06b6a1c6af6f2874f3a91 +size 797304 diff --git a/BZOJ/2038/data/1.out b/BZOJ/2038/data/1.out new file mode 100644 index 00000000..3481d1d8 --- /dev/null +++ b/BZOJ/2038/data/1.out @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7f4a8d7cc51746544e872c1fd3a05baa94bb76f8473c6598e65baedc43c0dac +size 778061 diff --git a/BZOJ/2038/data/10.in b/BZOJ/2038/data/10.in new file mode 100644 index 00000000..e8a5f6e5 --- /dev/null +++ b/BZOJ/2038/data/10.in @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40ae2874fd3cbb26ab80e665b598cdc36212ab231cbee4897f48953549c978a4 +size 299540 diff --git a/BZOJ/2038/data/10.out b/BZOJ/2038/data/10.out new file mode 100644 index 00000000..cc30f92f --- /dev/null +++ b/BZOJ/2038/data/10.out @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e1932f7e24c38756d9d5bccd856e0e4b49ce747ba84fca4db5e165afe8b297e +size 287687 diff --git a/BZOJ/2038/data/2.in b/BZOJ/2038/data/2.in new file mode 100644 index 00000000..d97c3e1b --- /dev/null +++ b/BZOJ/2038/data/2.in @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30a66d842a99aa0aa4fddb3eb224d1544600f411a1bc99b6c6f0423a38ba1203 +size 791056 diff --git a/BZOJ/2038/data/2.out b/BZOJ/2038/data/2.out new file mode 100644 index 00000000..fbc0dcb6 --- /dev/null +++ b/BZOJ/2038/data/2.out @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00fc6c9eab2996b633a9d3ff49de062370e1d9a1cceb239c12682ccb8b15a3a6 +size 797325 diff --git a/BZOJ/2038/data/3.in b/BZOJ/2038/data/3.in new file mode 100644 index 00000000..b648cbeb --- /dev/null +++ b/BZOJ/2038/data/3.in @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e521653a9cb19438ba52ca9c62e9f959c90e0e7f245116fed0029016d7dabe7 +size 800226 diff --git a/BZOJ/2038/data/3.out b/BZOJ/2038/data/3.out new file mode 100644 index 00000000..13b72486 --- /dev/null +++ b/BZOJ/2038/data/3.out @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45cd016e2190b861dec888e5e298b82e90c05dfb97d8fe765167ac9ecca61f09 +size 768927 diff --git a/BZOJ/2038/data/4.in b/BZOJ/2038/data/4.in new file mode 100644 index 00000000..060d2840 --- /dev/null +++ b/BZOJ/2038/data/4.in @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2d93ff5d5b610c031c0f545f15bbb3ffc60fe8668db95670df2eb753a9015a1 +size 66725 diff --git a/BZOJ/2038/data/4.out b/BZOJ/2038/data/4.out new file mode 100644 index 00000000..348a62ae --- /dev/null +++ b/BZOJ/2038/data/4.out @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aaf75900b713fff851ee5223cc97c4ea15a87de169274a9c8d5a9c8f11f6416a +size 59648 diff --git a/BZOJ/2038/data/5.in b/BZOJ/2038/data/5.in new file mode 100644 index 00000000..c1ebbbc6 --- /dev/null +++ b/BZOJ/2038/data/5.in @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5ec57fc259a9e01bd0cf39e7cf3b553c85b83642fece926c1927804b9b4e81f +size 381867 diff --git a/BZOJ/2038/data/5.out b/BZOJ/2038/data/5.out new file mode 100644 index 00000000..53c096df --- /dev/null +++ b/BZOJ/2038/data/5.out @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f06a3792640a5cc1ac6c1f6ffc98af21d9deaf7e16af5de96e29488fd8fab82 +size 367802 diff --git a/BZOJ/2038/data/6.in b/BZOJ/2038/data/6.in new file mode 100644 index 00000000..c8996cbf --- /dev/null +++ b/BZOJ/2038/data/6.in @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:425562d675555b8a050b11b6196da2b17b97c6c6c5fab132b49a35be4b5fbe47 +size 32179 diff --git a/BZOJ/2038/data/6.out b/BZOJ/2038/data/6.out new file mode 100644 index 00000000..3ea3f96c --- /dev/null +++ b/BZOJ/2038/data/6.out @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9fa67abcfdba0a085c5af2585db1fb663127b19b3d569b9b8531b9261741df8 +size 26020 diff --git a/BZOJ/2038/data/7.in b/BZOJ/2038/data/7.in new file mode 100644 index 00000000..6098fa95 --- /dev/null +++ b/BZOJ/2038/data/7.in @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f597035cbb6f90077c67af20641379a89be7e3dbf61f9413e9bc3b9dee352c5 +size 628708 diff --git a/BZOJ/2038/data/7.out b/BZOJ/2038/data/7.out new file mode 100644 index 00000000..cee86128 --- /dev/null +++ b/BZOJ/2038/data/7.out @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a24c07a013623c99cb490153afc7defaf8e36e39aaddea66f3b0ccecc92ea68 +size 621629 diff --git a/BZOJ/2038/data/8.in b/BZOJ/2038/data/8.in new file mode 100644 index 00000000..7e6b5f25 --- /dev/null +++ b/BZOJ/2038/data/8.in @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b226772e7f68164fdb6f73a227fd7140b044837f51bac30ac55618b80832bdcb +size 864 diff --git a/BZOJ/2038/data/8.out b/BZOJ/2038/data/8.out new file mode 100644 index 00000000..21b92b88 --- /dev/null +++ b/BZOJ/2038/data/8.out @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0bcd78d87866c5e0531673c919c967c1869aac1ff50f7dbf3b717817a895e2b0 +size 598 diff --git a/BZOJ/2038/data/9.in b/BZOJ/2038/data/9.in new file mode 100644 index 00000000..267ccb1d --- /dev/null +++ b/BZOJ/2038/data/9.in @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:935190773db1f7d31e3dccc64fc25f1b81fd94250c6a965c004e07ded9490aff +size 384921 diff --git a/BZOJ/2038/data/9.out b/BZOJ/2038/data/9.out new file mode 100644 index 00000000..ecc320bd --- /dev/null +++ b/BZOJ/2038/data/9.out @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cfad6c14515a03ba1d48bbb5855df4231c7345a195d93d4e29382f5a9a95d3c +size 358716