80分求助
查看原帖
80分求助
571508
Bad_Dream楼主2022/8/14 20:29
#include <stdio.h>

long long g[100000], i, m, n, s1, s2, p1, p2;
long long d, t, tmp, Min, l = __INT_MAX__;

int main()
{
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
        scanf("%d", &g[i]);
    scanf("%d%d%d%d", &m, &p1, &s1, &s2);
    p2 = 0;
    g[p1] += s1;
    for (i = 1; i <= n; i++)
    {
        if (m == i)
            continue;
        else if (m < i)
            t += -(m - i) * (g[i]);
        else
            d += (m - i) * (g[i]);
    }
    if (d < t)
    {
        l = 1;
        for (i = 1; i <= m; i++)
        {
            tmp = d;
            tmp += (m - i) * s2;
            tmp = t - tmp;
            if (tmp < 0)
                tmp = -tmp;
            if (i == 1)
                Min = tmp;
            if (tmp < Min)
            {
                Min = tmp;
                l = i;
            }
        }
    }
    else if (d > t)
    {
        l = 1;
        for (i = m + 1; i <= n; i++)
        {
            tmp = t;
            tmp += -(m - i) * s2;
            tmp = d - tmp;
            if (tmp < 0)
                tmp = -tmp;
            if (i == m + 1)
                Min = tmp;
            if (tmp < Min)
            {
                Min = tmp;
                l = i;
            }
        }
    }
    else
        p2 = m;
    if (p2 == 0)
        p2 = l;
    printf("%d\n", p2);
    system("pause");
    return 0;
}

2022/8/14 20:29
加载中...