玄学问题求julao解答
查看原帖
玄学问题求julao解答
928879
stripe_python楼主2023/8/10 16:53

这是本蒟蒻的10分代码:

#include <bits/stdc++.h>
using namespace std;
... // (正确的)快读快写
int n, a, res;
multiset<int> s;

int main() {
	read(n), read(a);
	s.insert(a);
	res = a;
	for (int i = 2; i <= n; i++) {
		read(a);
		auto it = s.insert(a);
		it--;
		auto l = it;
		it++, it++;
		auto r = it;
		if (l == s.begin()) res += abs(*r - a);
		else if (r == s.end()) res += abs(a - *l);
		else res += min(abs(*r - a), abs(a - *l));
	}
	write(res);
	return 0;
}

这是后来的AC代码:

#include <bits/stdc++.h>
using namespace std;
... // (正确的)快读快写
int n, a, res;
multiset<int> s;

int main() {
	s.insert(INT_MIN), s.insert(INT_MAX);
	
	read(n), read(a);
	s.insert(a);
	res = a;
	for (int i = 2; i <= n; i++) {
		read(a);
		auto it = s.insert(a);
		it--;
		auto l = it;
		it++, it++;
		auto r = it;
		if (*l == INT_MIN) res += abs(a - *r);
		else if (*r == INT_MAX) res += abs(a - *l);
		else res += min(abs(a - *r), abs(a - *l));
	}
	write(res);
	return 0;
}

不明白第一种为什么错,和第二种有什么区别,求julao解答。

2023/8/10 16:53
加载中...