64分蒟蒻求助!!!
查看原帖
64分蒟蒻求助!!!
282585
xybxyb楼主2020/10/25 21:22

一开始在c++上写的数组用了10000个就卡掉了,结果一试才44分… 最后改成100000个,又多过了几个,但还是64分……

#include<iostream>
#include<cstring>
#include<cstdio>
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	long long m,p1,s1,s2,a[100001],b[100001],lo=0,hu=0,ld[100001],q,hd[100001];
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	cin>>m>>p1>>s1>>s2;
	a[p1]=a[p1]+s1;
	for(int i=1;i<=n;i++)
	{
		if(i<m)
		{
			b[i]=a[i]*(m-i);
			lo=lo+b[i];
		}
		if(i==m)
			continue;
		if(i>m)
		{
			b[i]=a[i]*(i-m);
			hu=hu+b[i];
		}		
	}
	if(lo>hu)
	{
		long long t=lo-hu;
		long long minx=92233720368547758;
		for(int i=m+1;i<=n;i++)
		{
			ld[i]=s2*(i-m);
		}
		for(int i=m+1;i<=n;i++)
		{
			if(abs(t-ld[i])<minx)
				{
					minx=abs(t-ld[i]);
					q=i;
				}
		}
		cout<<q;
		return 0;
	}
	else
		{
			long long t=hu-lo;
		long long minx=92233720368547758;
		for(int i=0;i<=m-1;i++)
		{
			hd[i]=s2*(m-i);
		}
		for(int i=0;i<=m-1;i++)
		{
			if(abs(t-hd[i])<minx)
				{
					minx=abs(t-hd[i]);
					q=i;
				}
		}
		cout<<q;
		return 0;
		}
}
2020/10/25 21:22
加载中...