求助,又臭又长
查看原帖
求助,又臭又长
1373219
acommonman楼主2024/9/15 20:35
#define  _CRT_SECURE_NO_WARNINGS 1
#include <bits/stdc++.h>
using namespace std;
long long sum;
int x,n;
list<int>L;
int main() {
	cin >> n;
	for (int i = 0; i < n; i++) {
		int x;
		cin >> x;
		if (i == 0) {
			L.push_back(x);
			sum += abs(x);
		}
		else {
			if (x >= L.back()) {
				sum += abs(x-L.back());
				L.push_back(x);
			}
			else {

				if (x < L.front()) {
					sum += abs(x - L.front()); 
					L.push_front(x);
				}
			
				else {
					auto it = L.end();
					while ((--it) != L.begin()) { if (x < *it)break; }

					int m1 = abs(x - *it);
					it--;
					int m2 = abs(x - *it);
					it ++ ;
					sum += min(m1, m2);
					L.insert(it, x);
				}
			}
		}
		//cout <<"sum:" << sum << endl;
		//cout << "L.front()=" << L.front()<<endl;
	}
	cout << sum;
}

和第一篇题解的思路应该一样的,看不出哪里错

2024/9/15 20:35
加载中...