2 条题解

  • 1
    @ 2022-5-22 15:10:29
    #include<bits/stdc++.h>
    #define ll long long 
    using namespace std;
    const int mn = 1e5 + 10;
    int main()
    {
    	ll n, w[mn],m,p1=0,s1=0,s2,p2,cha=0,xh,xl;
    	cin >> n;
    	for (int i = 1; i <= n; i++) {
    		cin >> w[i];
    	}
    	cin >> m >> p1 >> s1 >> s2;
    	p2 = m;
    	w[p1] += s1;
    	ll l=0, h=0;
    	for (int i = 1; i <= m - 1; i++) {
    		l += w[i] * (m - i);
    	}
    	for (int i = n; i >= m + 1; i--) {
    		h += w[i] * (i - m);
    	}
    	if (l > h) {
    		cha = l - h;
    		for (int j = m + 1; j <= n; j++) {
    			xh = (j - m) * s2 + h;
    			if (abs(l - xh) < cha) {
    				cha = abs(l - xh);
    				p2 = j;
    			}
    		}
    	}
    	else  if(l<h) {
    		cha = h - l;
    		for (int j = 1; j <= m - 1; j++) {
    			xl = (m-j) * s2 +l;
    			if (abs(h - xl) < cha) {
    				cha = abs(h - xl);
    				p2 = j;
    			}
    		}
    	}
    	cout << p2;
    	return 0;
    }
    
    • 0
      @ 2022-6-12 10:16:30
      #include<bits/stdc++.h>
      using namespace std;
      long long n,a[1000000],m,p,s,k,sum,ans;
      int main(){
      	cin>>n;
      	for(int i=1;i<=n;i++) 
              cin>>a[i];
      	cin>>m>>p>>s>>k;
      	for(int i=1;i<=n;i++)
              sum+=a[i]*(m-i);
      	sum+=s*(m-p);
      	ans=m+int(sum*1.0/k+0.5*(sum>0?1:-1)); 
      	if(ans>n) 
              ans=n;
      	if(ans<1)
              ans=1;
      	cout<<ans;
      	return 0;
      }
      ////test
      
      • 1

      信息

      ID
      126
      时间
      1000ms
      内存
      256MiB
      难度
      3
      标签
      递交数
      19
      已通过
      18
      上传者