Solution
2023-07-18 13:59:44
发布于:广东
13阅读
0回复
0点赞
#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <vector>
#include <unordered_map>
#include <cassert>
#include <set>
#include <map>
#include <bitset>
using namespace std;
#define pb push_back
#define mp make_pair
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> ii;
const int maxn = 1e5+1;
int sum[maxn], mini[maxn], a[maxn], n;
int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; ++i)
scanf("%d", a+i);
sum[n] = mini[n] = a[n];
for (int i = n-1; i >= 1; --i)
{
sum[i] = a[i] + sum[i+1];
mini[i] = min(a[i], mini[i+1]);
}
int ans = -1, pos = 1;
for (int i = 2; i <= n-1; ++i)
{
ll dif = 1ll*pos*(sum[i]-mini[i])-1ll*(n-i)*ans;
if (dif > 0)
ans = sum[i]-mini[i], pos = n-i;
}
for (int i = 2; i <= n-1; ++i)
{
ll dif = 1ll*pos*(sum[i]-mini[i])-1ll*(n-i)*ans;
if (dif == 0)
printf("%d\n", i-1);
}
}
这里空空如也
有帮助,赞一个