为什么,如下 AC 代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
inline int read() {
int x = 0, f = 1; char ch = getchar();
while(ch < '0' || ch > '9') { if(ch == '-') f = -1; ch = getchar(); }
while(ch >= '0' && ch <= '9') { x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar(); }
return x * f;
}
int n, a[1007], b[1007];
int x = -1;
int amx = -107, amn = 107;
int bmx = -107, bmn = 107;
int main() {
n = read();
for(int i = 1; i <= n; i++) a[i] = read();
for(int i = 1; i <= n; i++) b[i] = read();
for(int i = 1; i <= n; i++) {
if((a[i] > 0 && b[i] <= 0) || (a[i] <= 0 && b[i] > 0)) {
x = i; break;
}
amx = max(amx, a[i]); amn = min(amn, a[i]);
bmx = max(bmx, b[i]); bmn = min(bmn, b[i]);
}
if(x > 0) {
for(int i = 1; i <= n; i++)
if(x == i) printf("1000 ");
else printf("0 ");
return 0;
}
int aa = -amn / -amx, bb = -bmn / -bmx;
if(aa > bb) {
for(int i = 1; i <= n; i++)
if(a[i] == amn) printf("1 ");
else if(a[i] == amx) cout << "-" << aa << " ";
else printf("0 ");
}
else {
for(int i = 1; i <= n; i++)
if(a[i] == amn) printf("1 ");
else if(a[i] == amx) cout << "-" << bb << " ";
else printf("0 ");
}
return 0;
}
有如下数据:
3
1 1 4
5 1 4
这份代码输出:
1 1 -0
-0 呢?开始怀疑我的数据有问题了。。