QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#30448#3857. Single-track railwaywhereismyteammate#WA 3ms5640kbC++201.1kb2022-04-28 18:44:232022-04-28 18:44:23

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-04-28 18:44:23]
  • 评测
  • 测评结果:WA
  • 用时:3ms
  • 内存:5640kb
  • [2022-04-28 18:44:23]
  • 提交

answer

#include <bits/stdc++.h>

const int N = 2e5 + 50;

int n, k;
int64_t t[N], a[N], sum;

inline int lowbit(int x) {
	return x & -x;
}

void add(int p, int v) {
	++p;
	for (; p < N; p += lowbit(p))
		t[p] += v;
}

int64_t query(int p) {
	++p;
	int64_t r = 0;
	for (; p; p -= lowbit(p))
		r += t[p];
	return r;
}
int64_t solve() {
	// find such k that minimize max(sum[1..k], sum[k+1]..n)
	if (n == 1) {
		return a[1];
	}
	int l = 0, r = n, ans = -1;
	while (l <= r) {
		const int mid = l + r >> 1;
		int v = query(mid);
		if (v > sum - v) {
			r = mid - 1;
		}
		else {
			ans = mid;
			l = mid + 1;
		}
	}
	assert(ans != -1);
	int64_t v = query(ans);
	assert((sum - v) >= v);
	return (sum - v) - v;
}

int main() {
	std::cin >> n;
	--n;
	for (int i = 1; i <= n; ++i) {
		std::cin >> a[i];
		sum += a[i];
		add(i, a[i]);
	}
	int m;
	std::cin >> m;
	std::cout << solve() << '\n';
	while (m--) {
		int j, v;
		std::cin >> j >> v;
		sum -= a[j];
		add(j, -a[j]);
		a[j] = v;
		sum += a[j];
		add(j, a[j]);
		std::cout << solve() << '\n';
	}
	return 0;
}

详细

Test #1:

score: 100
Accepted
time: 3ms
memory: 5640kb

input:

2
39
7
1 20
1 70
1 56
1 37
1 37
1 37
1 91

output:

39
20
70
56
37
37
37
91

result:

ok 8 lines

Test #2:

score: 0
Accepted
time: 2ms
memory: 3688kb

input:

3
8 41
0

output:

33

result:

ok single line: '33'

Test #3:

score: -100
Wrong Answer
time: 3ms
memory: 3612kb

input:

30
86 100 80 30 23 17 90 98 20 3 43 31 49 14 14 47 13 44 7 30 50 29 67 68 56 69 28 61 81
10
21 23
7 99
16 70
3 50
4 17
26 42
7 37
10 43
26 83
13 96

output:

8
79
70
93
25
10
11
17
5
18
27

result:

wrong answer 2nd lines differ - expected: '19', found: '79'