本人是大一小白一枚,已经卡了我整整两天了,希望各位能够帮我解决一下!!
这是2023年第十四届蓝桥杯C/C++大学C组的C题:
https://www.dotcpp.com/oj/problem3158.html
这是题目的链接,用C语言写,不是C++
我卡在90分过不去了,最后一个测试点写了好久就是过不去,哭死

然后一下是我自己写的代码,希望各位能帮我看看修改修改,谢谢啦~
#include <stdio.h>
#include <stdlib.h>
struct A
{
int x, y, z;
};
struct A arr[100001];
int pareX(const void* a, const void* b)
{
return (((struct A*)b)->x - ((struct A*)b)->y - ((struct A*)b)->z) -
(((struct A*)a)->x - ((struct A*)a)->y - ((struct A*)a)->z);
}
int pareY(const void* a, const void* b)
{
return (((struct A*)b)->y - ((struct A*)b)->x - ((struct A*)b)->z) -
(((struct A*)a)->y - ((struct A*)a)->x - ((struct A*)a)->z);
}
int pareZ(const void* a, const void* b)
{
return (((struct A*)b)->z - ((struct A*)b)->x - ((struct A*)b)->y) -
(((struct A*)a)->z - ((struct A*)a)->x - ((struct A*)a)->y);
}
long long int X, Y, Z;
int main()
{
int n;
int ix = -1, iy = -1, iz = -1;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i].x);
}
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i].y);
}
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i].z);
}
X = 0, Y = 0, Z = 0;
qsort(arr, n, sizeof(struct A), pareX);
for (int i = 0; i < n; i++)
{
X += arr[i].x;
Y += arr[i].y;
Z += arr[i].z;
if (X - Y - Z > 0)
{
ix = i;
}
else
{
break;
}
}
X = 0, Y = 0, Z = 0;
qsort(arr, n, sizeof(struct A), pareY);
for (int i = 0; i < n; i++)
{
X += arr[i].x;
Y += arr[i].y;
Z += arr[i].z;
if (Y - X - Z > 0)
{
iy = i;
}
else
{
break;
}
}
X = 0, Y = 0, Z = 0;
qsort(arr, n, sizeof(struct A), pareZ);
for (int i = 0; i < n; i++)
{
X += arr[i].x;
Y += arr[i].y;
Z += arr[i].z;
if (Z - X - Y > 0)
{
iz = i;
}
else
{
break;
}
}
printf("%d", (ix > iy ? (ix > iz ? ix : iz) : (iy > iz ? iy : iz)) + 1);
return 0;
}
代码写的比较垃圾
希望问题能被解决