蒟蒻求hack
查看原帖
蒟蒻求hack
345900
Haber楼主2020/11/11 12:01

题目传送门

72分代码:

#include<iostream>
using namespace std;
int main(){
	long long a[100001]={0},n,m,p1,s1,s2;
	long long l=0,h=0,min,minn=1e19,len;
	cin>>n;
	for(long long i=1;i<=n;i++){
		cin>>a[i];
	}
	cin>>m>>p1>>s1>>s2;
	for(long long i=1;i<m;i++){
		l=l+(m-i)*a[i];
	}
	for(long long i=m+1;i<=n;i++){
		h=h+a[i]*(i-m);
	}
	if(p1>m){
		a[p1]=a[p1]+s1;
		h=h+s1*(p1-m);
	}if(p1<m){
		a[p1]=a[p1]+s1;
		l=l+s1*(m-p1);
	}if(l==h){
		cout<<m;
		return 0;
	}else{
		if(l>h){
			for(long long i=m+1;i<=n;i++){
				if(s2*(i-m)+h>l){
					min=s2*(i-m)+h-l;
				}
				if(s2*(i-m)+h==l){
					cout<<i;
					return 0;
				}
				if(s2*(i-m)+h<l){
					min=l-(s2*(i-m)+h);
				}
				if(minn>min){
					minn=min;
					len=i;
				}
			}
			cout<<len;
			return 0;
		}
		for(long long i=1;i<m;i++){
			if(s2*(m-i)+l>h){
				min=s2*(m-i)+l-h;
			}
			if(s2*(m-i)+l==h){
				cout<<i;
				return 0;
			}
			if(s2*(m-i)+l<h){
				min=h-(s2*(m-i)+l);
			}
			if(minn>min){
				minn=min;
				len=i;
			}
		}
		cout<<len;
		return 0;
	}
	return 0;
}

求hack

2020/11/11 12:01
加载中...