哪位dalao能帮帮蒟蒻看看代码为何错了?
查看原帖
哪位dalao能帮帮蒟蒻看看代码为何错了?
405146
Ruan_ji楼主2022/5/1 10:47

rt,蒟蒻的代码至得了36分。感谢大佬们的帮助~~

#include <iostream>
#include <cstdio>
#define MAXN 100005
using namespace std;
long long n, c[MAXN], m, p1, s1, s2;
long long l, h;
long long answer;
int abs(int a, int b){
    if (a >= b) return a - b;
    else return b - a;
}
int main(){
    cin >> n;
    for (int i = 1;i <= n; ++i){
        cin >> c[i];
    }
    cin >> m >> p1 >> s1 >> s2;
    c[p1] += s1;
    bool flag = false;
    for (int i = 1;i <= n; ++i){
        if (i == m){
            flag = true;
            continue;
        }
        if (flag == false){
            l += (m - i) * c[i];
        }
        else if (flag == true){
            h += (i - m) * c[i];
        }
    }
    int number = abs(l, h);
    if (l == h){
        cout << m << endl;
        return 0;
    }
    else if (l > h){
        int H = 0;
        int a = 0;
        for (int i = m + 1;i <= n; ++i){
            a = (i - m) * c[i];
            H = (i - m) * (c[i] + s2);
            if (abs((H - a), number) < number){
                answer = i;
                number = abs((H - a), number);
            }
        }
        if (abs((H - a), number) > number){
            cout << m << endl;
            return 0;
        }
        cout << answer << endl;
        return 0;
    }
    else {
        int L = 0;
        int a = 0;
        for (int i = 1;i <= m - 1; ++i){
            a = (m - i) * c[i];
            L = (m - i) * (c[i] + s2);
            if (abs((L - a), number) < number){
                answer = i;
                number = abs((L - a), number);
            }
            else if (abs((L - a), number) == number and i < m){
                answer = i;
            }
        }
        if (abs((L - a), number) > number){
            cout << m << endl;
            return 0;
        }
        cout << answer << endl;
        return 0;
    }
    return 0;
}
2022/5/1 10:47
加载中...