拿别人家的AC代码拍了1h都没错
#include <cstdio>
#include <iostream>
using namespace std;
int T, rax, ray, rbx, rby, lax, lay, lbx, lby;
int cc(int xa, int ya, int xb, int yb) { return xa * yb - xb * ya >= 0; }
void ch() {
if ((cc(rbx - lbx, ray - lby, lax - lbx, lay - lby) == cc(lax - lbx, lay - lby, rax - lbx, ray - lby)) && (cc(lbx - rax, lby - ray, rbx - rax, 0) == cc(rbx - rax, 0, lax - rax, lay - ray))) printf("T\n");
else if ((cc(rbx - lbx, rby - lby, lax - lbx, lay - lby) == cc(lax - lbx, lay - lby, rbx - lbx, ray - lby)) && (cc(lbx - rbx, lby - ray, 0, rby - ray) == cc(0, rby - ray, lax - rbx, lay - ray))) printf("T\n");
else if ((cc(rax - lbx, rby - lby, lax - lbx, lay - lby) == cc(lax - lbx, lay - lby, rbx - lbx, rby - lby)) && (cc(lbx - rbx, lby - rby, rax - rbx, 0) == cc(rax - rbx, 0, lax - rbx, lay - rby))) printf("T\n");
else if ((cc(rax - lbx, ray - lby, lax - lbx, lay - lby) == cc(lax - lbx, lay - lby, rax - lbx, rby - lby)) && (cc(lbx - rax, lby - rby, 0, ray - rby) == cc(0, ray - rby, lax - rax, lay - rby))) printf("T\n");
else printf("F\n");
}
int main() {
// freopen("data.in", "r", stdin);
// freopen("my.out", "w", stdout);
scanf("%d", &T);
while (T--) {
scanf("%d%d%d%d%d%d%d%d", &lax, &lay, &lbx, &lby, &rax, &ray, &rbx, &rby);
if (rax > rbx) swap(rax, rbx);
if (ray < rby) swap(ray, rby);
if (lby > lay) swap(lbx, lax), swap(lay, lby);
if ((lax >= rax && lax <= rbx && lay <= ray && lay >= rby) || (lbx >= rax && lbx <= rbx && lby <= ray && lby >= rby)) printf("T\n");
else if (max(lax, lbx) - rax > rbx - rax + abs(lax - lbx) || max(lay, lby) - rby > ray - rby + abs(lay - lby)) printf("F\n");
else ch();
}
return 0;
}