题解
2023-09-01 16:57:47
发布于:广东
3阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
int n;
cin >> n;
vector<ll> questions(n);
for (int i = 0; i < n; i++) { cin >> questions[i]; }
int left = -1;
int right = n;
vector<ll> total_score(n);
vector<ll> min_score(n);
vector<ll> max_score_values;
total_score[n - 1] = questions[n - 1];
min_score[n - 1] = questions[n - 1];
ll curr_question, curr_score, idx;
for (int i = n - 2; i > 0; i--) {
curr_question = questions[i];
total_score[i] = curr_question + total_score[i + 1];
min_score[i] = min(min_score[i + 1], curr_question);
curr_score = total_score[i] - min_score[i];
idx = (n - (i + 1));
if (curr_score * right > left * idx) {
left = curr_score;
right = idx;
max_score_values = {i};
} else if (curr_score * right == left * idx) {
max_score_values.push_back(i);
}
}
sort(max_score_values.begin(), max_score_values.end());
for (ll k : max_score_values) { cout << k << "\n"; }
}
这里空空如也
有帮助,赞一个