线段树写的,感觉思路没问题,但是没输出。。。QWQ
#include<bits/stdc++.h>
using namespace std;
int n,ans[100000],top,ansz;
int s[100050];
int a[100050];
int t[400050];
void built(int l,int r,int p){
if(l==r){
t[p]=a[l];
return ;
}
int mid=l+r>>1;
built(l,mid,p*2);
built(mid+1,r,p*2+1);
t[p]=min(t[p*2],t[p*2+1]);
}
int q(int l,int r,int ll,int rr,int p){
if(l>=ll&&r<=rr){
return t[p];
}
int mid=(l+r)>>1,ansp=1000000000;
if(l<=mid){
ansp=min(ansp,q(l,mid,ll,rr,p*2));
}
if(r>mid){
ansp=min(ansp,q(mid+1,r,ll,rr,p*2+1));
}
return ansp;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
s[i]=s[i-1]+a[i];
}
built(1,n,1);
for(int i=1;i<=n-2;i++){
int t=(s[n]-s[i]-q(1,n,1,i,1))/(n-i-1);
if(ansz<t){
top=0;
ansz=t;
ans[++top]=i;
cout<<1;
}
if(ansz==t){
ans[++top]=i;
}
}
for(int i=1;i<=top;i++){
cout<<ans[i]<<'\n';
}
return 0;
}