#include #include #include using namespace std; vector< long int> PobierzFunkcjeSzare(vector< long int> &PoleSzareX, vector< long int> &PoleSzareY) { int X, Y; cin >> X >> Y; PoleSzareX.push_back(X); PoleSzareY.push_back(Y); while ((PoleSzareX.front() != PoleSzareX.back() || PoleSzareY.front() != PoleSzareY.back()) || PoleSzareX.size() == 1 ) { cin >> X; PoleSzareX.push_back(X); cin >> Y; PoleSzareY.push_back(Y); } return PoleSzareX, PoleSzareY; } vector PobierzFunkcjeCzarne(vector< long int> &PoleCzarneX, vector< long int> &PoleCzarneY) { int X, Y; cin >> X >> Y; PoleCzarneX.push_back(X); PoleCzarneY.push_back(Y); while ((PoleCzarneX.front() != PoleCzarneX.back() || PoleCzarneY.front() != PoleCzarneY.back()) || PoleCzarneX.size() == 1) { cin >> X; PoleCzarneX.push_back(X); cin >> Y; PoleCzarneY.push_back(Y); } return PoleCzarneX, PoleCzarneY; } double ObliczPoleSzare(vector< long int> SzX, vector< long int> SzY) { double areaSz=0; int s = SzX.size(); for (int i = 0; i < s-1; i++) { areaSz+= (SzX[i] + SzX[(i + 1) % s]) * (SzY[i] - SzY[(i + 1) % s]); } return abs(areaSz/2); } double ObliczPoleCzarne(vector< long int> CzX, vector CzY) { double areaCz=0; int s = CzX.size(); for (int i = 0; i < s-1; i++) { areaCz += (CzX[i] + CzX[(i + 1) % s]) * (CzY[i] - CzY[(i + 1) % s]); } return abs(areaCz / 2); } int main() { int d; cin >> d; for (int i = 0; i < d; i++) { vector< long int> PoleSzareX, PoleSzareY; vector PoleCzarneX, PoleCzarneY; PobierzFunkcjeCzarne(PoleCzarneX, PoleCzarneY); PobierzFunkcjeSzare(PoleSzareX, PoleSzareY); double Cz, Sz; double abc; Sz = ObliczPoleSzare(PoleSzareX, PoleSzareY); Cz = ObliczPoleCzarne(PoleCzarneX, PoleCzarneY); abc = ((Sz - Cz) * 6) + (Cz * 10); cout << abc << endl << endl; } return 0; }