結果
問題 | No.925 紲星 Extra |
ユーザー | lumc_ |
提出日時 | 2019-09-17 18:00:01 |
言語 | C++14 (gcc 12.3.0 + boost 1.83.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,682 bytes |
コンパイル時間 | 1,233 ms |
コンパイル使用メモリ | 109,820 KB |
実行使用メモリ | 14,440 KB |
最終ジャッジ日時 | 2024-09-15 05:47:08 |
合計ジャッジ時間 | 12,998 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
6,816 KB |
testcase_01 | AC | 2 ms
6,944 KB |
testcase_02 | AC | 2 ms
6,940 KB |
testcase_03 | AC | 13 ms
6,940 KB |
testcase_04 | AC | 12 ms
6,940 KB |
testcase_05 | TLE | - |
testcase_06 | -- | - |
testcase_07 | -- | - |
testcase_08 | -- | - |
testcase_09 | -- | - |
testcase_10 | -- | - |
testcase_11 | -- | - |
testcase_12 | -- | - |
testcase_13 | -- | - |
testcase_14 | -- | - |
testcase_15 | -- | - |
testcase_16 | -- | - |
testcase_17 | -- | - |
testcase_18 | -- | - |
testcase_19 | -- | - |
testcase_20 | -- | - |
testcase_21 | -- | - |
ソースコード
#if 0 想定TLE 愚直解 O(Q N lg N) #endif #define ONLINE // includes {{{ #include<iostream> #include<iomanip> #include<algorithm> #include<vector> #include<stack> #include<queue> #include<map> #include<set> #include<tuple> #include<cmath> #include<random> #include<cassert> #include<bitset> #include<cstdlib> // #include<deque> // #include<multiset> // #include<cstring> // #include<bits/stdc++.h> // }}} using namespace std; using ll = long long; constexpr ll inf = 1ll << 40; int n, q; int main() { std::ios::sync_with_stdio(false), std::cin.tie(0); cin >> n >> q; assert(1 <= n && n < (1 << 16)); assert(1 <= q && q < (1 << 16)); vector<ll> med(q), smaller(q), bigger(q); vector<ll> v(n); for(auto &e: v) { cin >> e; assert(0 <= e && e < inf); } vector<ll> t(q), l(q), r(q); for(int i = 0; i < q; i++) cin >> t[i] >> l[i] >> r[i]; ll sum16 = 0, sum40 = 0; for(int i = 0; i < q; i++) { if(t[i] == 1) { // update #ifdef ONLINE l[i] ^= sum16; r[i] ^= sum40; #endif assert(1 <= l[i] && l[i] <= n); assert(0 <= r[i] && r[i] < inf); l[i]--; v[l[i]] = r[i]; } else { // query #ifdef ONLINE l[i] ^= sum16; r[i] ^= sum16; #endif assert(1 <= l[i] && l[i] <= n); assert(1 <= r[i] && r[i] <= n); if(l[i] > r[i]) swap(l[i], r[i]); l[i]--; vector<ll> w(v.begin() + l[i], v.begin() + r[i]); sort(begin(w), end(w)); ll a = w[(int(w.size()) - 1)/2]; ll b = 0; for(auto e : w) b += abs(e - a); sum16 ^= b % (1 << 16); sum40 ^= b % (1ll << 40); cout << b << "\n"; cout << flush; } } return 0; }