3 solutions

  • 1
    @ 2023-8-15 15:45:55

    代码1(先看这个,再看2):

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    
    int main(){
        int n;
        vector<LL> a;
        cin>>n;
        for(int i=1;i<=n;i++){
            LL c;
            cin>>c;
            a.push_back(c);
        }
        LL sum=0;
        //先从大到小删除负数
        for(int i=n-1;i>=0;i--){
            if(a[i]<0){
                sum += a[i]*(i+1);
                a.erase(a.begin()+i);
            }
        }
        //再从小到大删除正数
        for(int i=0;i<a.size();){
            sum += a[i]*1;
            a.erase(a.begin()+i);
        }
        cout<<sum;
        return 0;
    }
    

    代码2: (此代码一气呵成,考虑到删除的元素,若是负数,权重为本身下标;若是正数,权重为1,即从第一个元素开始。建议先看代码1,理解过程。)

    #include<iostream>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    int n, m, i;
    ll ans;
    int main()
    {
        cin >> n;
        for(i=1; i<=n; i++)
        {
            cin >> m;
            if(m < 0)
                ans += (ll)m*i;
            else
                ans += m;
        }
        cout << ans << endl;
        return 0;
    }
    
    • 0
      @ 2024-12-8 23:04:03

      #include <stdio.h> int main() { int n,i; long long int sum=0,p[10000]; scanf("%d", &n); for(i=1;i<=n;i++) { scanf("%lld", &p[i]); if(p[i]>0)sum += p[i]; else { sum += (p[i] *i); } } printf("%lld\n", sum); return 0; }

      • 0
        @ 2021-12-26 17:42:17

        思路

        贪心的想,我们如果想让代价最小,那么我们肯定是希望删除负数的时候使用ai×ia_i \times i 在它原本的位置的价值从后往前来删除,而对于正数,我们直接在第一个位置删除即可。

        Code

        #include<bits/stdc++.h>
        #include<ctime>
        #include<cstdlib>
        using namespace std;
        #define ll long long
        int main()
        {
        	ll n,k;
        	scanf("%lld",&n);
        	ll sum = 0;
        	for(int i = 1;i <= n; ++i) {
        		scanf("%lld",&k);
        		if(k < 0)	sum += k*i;
                else	sum += k;
        	}
        	printf("%lld\n",sum);
        	return 0;
        } 
        
        • 1

        Information

        ID
        267
        Time
        1000ms
        Memory
        256MiB
        Difficulty
        3
        Tags
        # Submissions
        527
        Accepted
        128
        Uploaded By