H题为什么这么写过不了
#include <bits/stdc++.h>
using namespace std;
struct ys {
int a;
int b;
int c;
} x[10000005];
bool cmp1(ys a, ys b) {
return a.c > b.c;
}
int main() {
int n;
scanf("%d", &n);
long long sum = 0;
for (int i = 0; i < n; i++) {
scanf("%d", &x[i].a);
}
for (int i = 0; i < n; i++) {
scanf("%d", &x[i].b);
x[i].c = abs(x[i].a - x[i].b);
sum = sum + x[i].c;
}
sort(x, x + n, cmp1);
int j = 0;
long long mx = 0;
while (j + 1 < n&&mx < x[j].c + x[j + 1].c ) {
int i = 1;
while (i + j < n&&mx < x[j].c + x[i + j].c ) {
if (mx < x[j].c + x[i + j].c - (abs(x[j].a - x[i + j].b) + abs(x[i + j].a - x[j].b))) {
mx = x[j].c + x[i + j].c - (abs(x[j].a - x[i + j].b) + abs(x[i + j].a - x[j].b));
}
i++;
}
j++;
}
sum = sum - mx;
printf("%lld", sum);
}
交换内循环的两个判断条件时过58%,不交换的时候过37%,我不理解,求佬带。