关于最后一个点
查看原帖
关于最后一个点
959582
dongrunxuan楼主2024/3/29 12:24

请问为什么我的代码错了,我认为代码的37~40行以及最后的输出都说明我做了多组输出.求大佬解答。

#include<bits/stdc++.h>
using namespace std;
int n,f;
double ans=-1;
const int maxn=1e5+10;
int a[maxn];
int minn[maxn],sum[maxn];
vector<int>vec;
int main()
{
	cin>>n;
	cin>>a[1];
	for(int i=2;i<=n;i++)
	{
		cin>>a[i];	
	}	
	minn[n]=sum[n]=a[n];
	for(int i=n-1;i>=1;i--)
	{
		minn[i]=min(minn[i+1],a[i]);
	}
	for(int i=n-1;i>=1;i--)
	{
		sum[i]=sum[i+1]+a[i];
	}
	for(int i=1;i<=n-1;i++)
	{
		double grad=sum[i+1]-minn[i+1];
		grad/=(n-i);
		//cout<<i<<" "<<grad<<endl;
		if(grad>ans)
		{
			ans=grad;
			vec.clear();
			vec.push_back(i);
		}
		else if(fabs(grad-ans)<1e-6)
		{
			vec.push_back(i);
		}
	}
	for(int i=0;i<vec.size();i++)
	{
		cout<<vec[i]<<endl;
	}
	return 0;
}
2024/3/29 12:24
加载中...