记得开 long long!记得开 long long!记得开 long long!重要的事情说三遍。
不开 long long 的话会痛失 20pts。
#include <cstdio>
using namespace std;
long long min1 = 1e19;
long long dragon, tiger;
long long n, m, p1, s1, s2, pos, c[100007];
long long abs (long long, long long);
int main() {
scanf ("%lld", &n);
for (int i = 1; i <= n; i++)
scanf ("%d", &c[i]);
scanf ("%lld%lld%lld%lld", &m, &p1, &s1, &s2);
c[p1] += s1;
for (int i = 1; i <= n; i++) {
if (i < m)
dragon += (m - i) * c[i];
else if (i > m)
tiger += (i - m) * c[i];
}
for (int i = 1; i <= n; i++) {
int x = dragon;
int y = tiger;
if (i < m)
x += (m - i) * s2;
else if (i > m)
y += (i - m) * s2;
int num = abs (x, y);
if (num < min1) {
min1 = num;
pos = i;
}
}
printf ("%lld", pos);
return 0;
}
long long abs (long long a, long long b) {
if (a >= b)
return a - b;
else
return b - a;
}
#include <cstdio>
using namespace std;
long long min1 = 1e19;
long long dragon, tiger;
long long n, m, x, y, p1, s1, s2, pos, c[100007];
long long abs (long long, long long);
int main() {
scanf ("%lld", &n);
for (int i = 1; i <= n; i++)
scanf ("%d", &c[i]);
scanf ("%lld%lld%lld%lld", &m, &p1, &s1, &s2);
c[p1] += s1;
for (int i = 1; i <= n; i++) {
if (i < m)
dragon += (m - i) * c[i];
else if (i > m)
tiger += (i - m) * c[i];
}
for (int i = 1; i <= n; i++) {
x = dragon;
y = tiger;
if (i < m)
x += (m - i) * s2;
else if (i > m)
y += (i - m) * s2;
long long num = abs (x, y);
if (num < min1) {
min1 = num;
pos = i;
}
}
printf ("%lld", pos);
return 0;
}
long long abs (long long a, long long b) {
if (a >= b)
return a - b;
else
return b - a;
}