QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#638790 | #5669. Traveling in Jade City | wmw# | RE | 0ms | 0kb | C++20 | 2.2kb | 2024-10-13 16:55:58 | 2024-10-13 16:55:58 |
answer
//
// Created by 조문성 on 2024. 10. 13..
//
#include <bits/stdc++.h>
#define all(v) v.begin(), v.end()
#define prs(v) sort(all(v)); v.erase(unique(all(v)), v.end())
using namespace std;
using ll = long long;
const int tN = 1 << 21;
ll t1[tN], t2[tN];
void update(int i, ll k, int op) {
for (; i < tN; i += i & -i)(op ? t1 : t2)[i] += k;
}
ll query(int i, int op) {
ll res = 0;
for (; i; i -= i & -i)res += (op ? t1 : t2)[i];
return res;
}
ll qry(int l, int r, int op) {
return query(r, op) - query(l - 1, op);
}
const int N = 1'000'000;
int main() {
cin.tie(0)->sync_with_stdio(0);
int n, k, m, Q;
assert(n <= N);
assert(k <= n);
assert(m <= N);
assert(Q <= N);
cin >> n >> k >> m >> Q;
vector<ll> W1(n + 1), W2(m + 2);
vector<int> on1(n + 1, 1), on2(m + 2, 1);
for (int s = 1; s <= n; s++)cin >> W1[s];
for (int s = 1; s <= m + 1; s++)cin >> W2[s];
for (int s = 1; s <= n; s++)update(s, W1[s], 1);
for (int s = 1; s <= m + 1; s++)update(s, W2[s], 0);
auto dist = [&](int u, int v) {
if (u > v)swap(u, v);
ll l = qry(u, v - 1, 1);
ll r = qry(1, u - 1, 1) + qry(v, n, 1);
return min(l, r);
};
for (int q = 1; q <= Q; q++) {
char op;
cin >> op;
if (op == 'q') {
int u, v;
cin >> u >> v;
if (u > v)swap(u, v);
ll l = dist(u, v);
ll a = dist(u, 1) + dist(k, v) + qry(1, m + 1, 0);
ll b = dist(u, k) + dist(1, v) + qry(1, m + 1, 0);
ll mn = min({l, a, b});
if (mn >= 1e9)cout << "impossible\n";
else cout << mn << '\n';
} else if (op == 'c') {
int i;
cin >> i;
if (on1[i])update(i, -W1[i], 1), update(i, 1e9, 1), on1[i] = 0;
else update(i, -1e9, 1), update(i, W1[i], -1), on1[i] = 1;
} else {
int i;
cin >> i;
i++;
if (on2[i])update(i, -W2[i], 0), update(i, 1e9, 0), on2[i] = 0;
else update(i, -1e9, 0), update(i, W2[i], 0), on2[i] = 1;
}
}
}
详细
Test #1:
score: 0
Runtime Error
input:
4 3 1 9 2 3 8 4 1 1 q 3 4 x 0 q 3 4 c 3 q 3 4 c 1 q 3 4 x 0 q 3 4