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%,我不理解,求佬带。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务