#include <iostream> #include <math.h> const double PI = 3.14159265; template<typename Type> auto bezwzgledna(Type var) { if (var < 0) return -var; else return var; } class Wspolrzedna { private: public: double x; double y; Wspolrzedna() {} Wspolrzedna(double a, double b) : x(a), y(b) {} bool operator==(Wspolrzedna & druga) { if (x == druga.x && y == druga.y) return true; else return false; } }; class Bierka { private: bool minus(double a) { if (a < 0) return true; else return false; } bool getLineIntersection(double p0_x, double p0_y, double p1_x, double p1_y, double p2_x, double p2_y, double p3_x, double p3_y) { double s1_x, s1_y, s2_x, s2_y; s1_x = p1_x - p0_x; s1_y = p1_y - p0_y; s2_x = p3_x - p2_x; s2_y = p3_y - p2_y; double s, t; s = (-s1_y * (p0_x - p2_x) + s1_x * (p0_y - p2_y)) / (-s2_x * s1_y + s1_x * s2_y); t = (s2_x * (p0_y - p2_y) - s2_y * (p0_x - p2_x)) / (-s2_x * s1_y + s1_x * s2_y); if (s > 0 && s < 1 && t > 0 && t < 1) return true; else return false; } public: Wspolrzedna pierwsza; Wspolrzedna druga; Bierka() {} Bierka(double x1, double y1, double x2, double y2) : pierwsza(x1, y1), druga(x1, y1) {} bool null() { if (pierwsza == druga) return true; else return false; } bool L(Bierka & second); bool X(Bierka & second) { return getLineIntersection(pierwsza.x, pierwsza.y, druga.x, druga.y, second.pierwsza.x, second.pierwsza.y, second.druga.x, second.druga.y); } bool V(Bierka & second); bool koniec_styczny(Bierka & second); // Metody sprawdzające czy funkcja jest stała i jaka konkretnie bool stala() { if (pierwsza.x == druga.x || pierwsza.y == druga.y) return true; else return false; } bool stala_y() { if (pierwsza.x == druga.x) return true; else return false; } bool stala_x() { if (pierwsza.y == druga.y) return true; else return false; } }; bool Bierka::koniec_styczny(Bierka & second) { if ( ((druga == second.druga) && !(pierwsza == second.pierwsza)) || ((druga == second.pierwsza) && !(pierwsza == second.druga)) || (!(druga == second.druga) && (pierwsza == second.pierwsza)) || (!(druga == second.pierwsza) && (pierwsza == second.druga)) ) return true; else return false; } bool Bierka::L(Bierka & second) { if (koniec_styczny(second) && !stala() && !second.stala()) { double a1, a2; if (druga.x != pierwsza.x) a1 = (druga.y - pierwsza.y) / (druga.x - pierwsza.x); else a1 = 0; if (second.druga.x != second.pierwsza.x) a2 = (second.druga.y - second.pierwsza.y) / (second.druga.x - second.pierwsza.x); else a2 = 0; if (a1*a2 == -1) return true; else return false; } else if (koniec_styczny(second) && ((stala_x() && second.stala_y()) || (stala_y() && second.stala_x()))) return true; else return false; } bool Bierka::V(Bierka & second) { if (koniec_styczny(second)) { double x_vektora, y_vektora, second_x_vektora, second_y_vektora; // Warunki określające początek wektorów (tak aby oba wektory miały początek w punkcie wspólnym if (druga == second.druga) { x_vektora = pierwsza.x - druga.x; y_vektora = pierwsza.y - druga.y; second_x_vektora = second.pierwsza.x - second.druga.x; second_y_vektora = second.pierwsza.y - second.druga.y; } else if (druga == second.pierwsza) { x_vektora = pierwsza.x - druga.x; y_vektora = pierwsza.y - druga.y; second_x_vektora = second.druga.x - second.pierwsza.x; second_y_vektora = second.druga.y - second.pierwsza.y; } else if (pierwsza == second.druga) { x_vektora = druga.x - pierwsza.x; y_vektora = druga.y - pierwsza.y; second_x_vektora = second.pierwsza.x - second.druga.x; second_y_vektora = second.pierwsza.y - second.druga.y; } else if (pierwsza == second.pierwsza) { x_vektora = druga.x - pierwsza.x; y_vektora = druga.y - pierwsza.y; second_x_vektora = second.druga.x - second.pierwsza.x; second_y_vektora = second.druga.y - second.pierwsza.y; } double angle; double kat_main = atan2(y_vektora, x_vektora) * 180 / PI; double kat_second = atan2(second_y_vektora, second_x_vektora) * 180 / PI; // warunki sprawdzające czy atan dało wynik ujemny if (kat_main < 0) kat_main = 360 - bezwzgledna(kat_main); if (kat_second < 0) kat_second = 360 - bezwzgledna(kat_second); angle = bezwzgledna(kat_main - kat_second); if (angle < 90 && angle > 0) return true; else return false; } } int main() { int ile; std::cin >> ile; Bierka * bierki = new Bierka[ile * 2]; double x1, y1, x2, y2; for (int i = 0; i < ile * 2; i++) { std::cin >> x1 >> y1 >> x2 >> y2; bierki[i].pierwsza.x = x1; bierki[i].pierwsza.y = y1; bierki[i].druga.x = x2; bierki[i].druga.y = y2; } char * liczby_rzymskie = new char[ile]; for (int i = 0, g = 0; i < ile * 2; i += 2, g++) { if (bierki[i].L(bierki[i + 1])) liczby_rzymskie[g] = 'L'; else if (bierki[i].X(bierki[i + 1])) liczby_rzymskie[g] = 'X'; else if (bierki[i].V(bierki[i + 1])) liczby_rzymskie[g] = 'V'; else liczby_rzymskie[g] = '-'; } long double iloczyn = 1; for (int i = 0; i < ile; i++) { switch (liczby_rzymskie[i]) { case 'L': printf("L\n"); iloczyn *= 50; break; case 'X': printf("X\n"); iloczyn *= 10; break; case 'V': printf("V\n"); iloczyn *= 5; break; case '-': printf("-\n"); } } printf("%.llf", iloczyn); delete[] liczby_rzymskie; delete[] bierki; return 0; }
477 4 1 3 0 0 3 3 0 0 4 2 2 2 4 0 0 1 1 3 3 1 1 3 1 0 2 6 0 3 1 4 3 0 2 6 0 6 0 7 2 0 2 6 0 6 0 5 -2 0 0 2 0 2 0 4 0 0 0 2 0 0 0 4 0 0 0 5 0 2 -1 2 2 0 0 2 2 2 2 4 4 0 0 2 3 2 0 0 3 0 0 2 3 3 0 0 2 2 3 0 0 3 0 0 2 2 3 0 0 2 0 0 3 0 0 2 2 2 0 0 2 2 2 0 0 2 0 0 2 0 0 2 2 2 2 2 4 0 0 2 2 2 4 2 2 0 0 2 2 2 2 4 0 2 2 0 0 4 0 2 2 9 6 17 18 10 14 10 14 12 8 12 0 0 8 5 14 16 8 10 0 7 12 13 16 3 12 9 18 19 0 3 9 6 8 18 12 1 8 15 1 1 14 17 7 14 14 14 14 13 3 2 17 6 12 7 8 17 1 5 16 12 17 2 0 13 11 17 12 12 7 19 12 15 5 13 8 16 1 19 19 2 9 4 14 19 8 14 11 11 17 10 11 8 15 6 4 0 14 18 15 18 12 1 18 5 13 17 6 3 2 15 9 3 5 3 19 0 2 5 17 3 11 11 7 5 12 19 17 7 5 6 17 17 6 9 19 7 2 19 18 6 10 16 14 1 9 7 12 12 2 11 13 12 16 5 3 14 17 0 4 17 13 14 6 14 14 19 3 5 1 8 11 17 3 12 5 4 10 12 11 19 9 12 16 2 3 5 18 3 8 13 5 3 12 2 7 4 17 18 13 3 2 18 6 14 12 5 2 6 10 3 18 13 5 19 15 13 8 0 16 1 16 8 13 16 4 0 2 17 12 13 18 6 0 6 11 2 0 5 12 15 8 2 8 10 1 5 14 11 4 1 5 4 12 12 1 3 12 8 5 4 0 16 1 7 2 13 3 10 1 2 10 11 5 9 17 3 13 18 6 13 14 17 11 7 9 18 2 11 2 1 18 12 8 15 17 10 19 10 8 2 0 0 5 19 5 17 1 7 15 18 16 10 12 1 8 10 17 1 0 12 14 19 2 14 16 2 14 9 4 8 4 2 3 16 8 2 13 8 14 7 9 8 19 2 17 14 10 10 4 6 15 4 14 18 17 17 10 10 12 19 6 7 18 9 13 10 3 9 11 6 10 9 16 13 7 2 11 5 7 1 4 7 3 10 17 18 6 11 7 19 1 2 2 14 6 18 11 7 16 0 0 4 0 1 1 4 1 0 -9 5 9 3 6 7 -6 0 -8 3 -2 8 3 3 -9 3 1 8 7 -6 0 7 -7 -9 0 6 5 7 2 -9 8 -5 -1 9 7 3 -4 -6 -2 -3 -1 -1 7 -9 1 -6 -3 2 -6 4 -1 -4 4 -1 0 -4 -7 0 6 -7 -2 0 6 1 -5 -8 9 -4 -7 -2 3 8 -2 6 -5 -7 -8 5 1 9 -6 -5 4 -8 -9 -8 9 -7 1 3 1 6 -1 8 -1 -3 9 -4 -2 6 8 -9 6 3 2 8 1 8 9 -7 8 -2 0 -2 4 7 6 5 4 -4 -7 5 -9 -2 -5 -2 3 2 3 -1 6 5 -6 9 -1 1 6 0 -3 -7 -8 4 -5 -8 -7 2 9 0 -1 9 -7 -5 -9 -3 2 -6 1 -5 -1 -2 6 -7 -6 -2 -1 4 -4 5 -6 -1 -1 0 -1 -6 0 4 -6 -3 0 -4 0 -3 -7 1 0 -5 -1 0 2 7 -8 0 -4 -2 2 0 7 7 7 0 -2 -2 -2 8 -1 0 9 -9 -7 -2 -9 4 -1 3 -2 7 -3 -2 6 2 7 0 -7 2 2 -6 1 2 -3 -2 -2 -4 1 -1 -8 -7 -9 4 0 3 -4 8 1 0 -7 -4 4 -5 8 5 5 3 -4 5 9 9 -1 4 9 0 1 7 6 3 4 -2 5 0 -9 -5 7 5 -3 4 7 -2 3 -5 6 -8 1 4 0 7 1 1 1 8 7 1 -1 5 7 9 -3 9 -2 4 -2 -4 -7 4 3 7 1 9 7 0 -7 3 1 -8 9 -7 5 9 -1 -5 9 9 4 -4 5 8 0 -6 5 -6 -8 0 -9 -9 4 8 0 6 0 -8 1 -1 0 -4 5 -2 -6 0 -4 -8 8 5 -8 5 -8 3 3 -5 3 1 -2 3 0 -6 6 8 -3 -5 0 -9 7 1 0 -8 -8 -5 6 -1 -3 -6 4 -6 -1 -8 -5 2 -1 -6 4 8 -5 5 -3 3 -6 9 -7 7 -8 -1 4 -1 9 0 6 8 -1 8 -4 -2 2 -3 -9 9 0 -7 -6 4 -9 -1 -5 -9 -7 -3 0 4 2 -3 3 -5 -7 -4 -2 -1 -8 -8 6 -4 7 5 0 2 1 7 -2 -4 6 5 1 -3 -3 7 -1 -3 3 -7 -2 -7 -9 2 0 5 8 8 -3 1 4 6 2 -5 2 1 5 -4 7 -1 6 9 -3 6 2 -2 -8 3 3 0 -4 -6 5 -8 -8 4 0 -8 -5 9 -5 -5 4 -8 0 7 -5 5 3 -5 5 -7 -8 0 -4 -1 3 -7 -8 7 7 4 9 2 8 -7 2 1 -3 5 -3 9 7 5 3 6 0 -2 -5 -5 7 -8 -8 3 5 2 -9 -6 0 -5 -8 4 6 -4 -7 8 -6 5 0 0 1 5 -6 9 7 -9 0 9 -6 -2 5 0 -1 1 8 -1 -6 9 0 0 7 -6 9 -8 9 1 -2 9 0 0 -5 -9 0 -6 2 -2 0 9 -5 7 9 -3 1 9 -7 2 1 -6 5 -6 -4 -8 -8 -9 6 -1 7 9 1 4 -8 -3 -3 6 -7 -7 -2 8 -5 -7 6 -7 7 7 6 8 -1 9 4 -4 -9 -5 0 -7 3 -9 4 -8 -6 1 7 1 3 6 8 -1 5 2 -2 -5 5 8 4 5 -1 -5 9 3 0 -2 4 0 -2 0 -6 3 -2 6 -9 -9 4 -4 -6 0 9 7 0 -8 3 -9 -7 -3 -6 8 -7 -1 -7 -9 -4 3 -3 2 1 9 2 -7 -5 1 -6 -2 -2 -7 8 6 -7 0 2 -6 -4 1 -8 -8 -4 9 0 6 -4 3 -3 9 0 -2 -4 0 6 7 -5 -2 -4 1 -3 0 -4 -4 -4 7 6 1 1 -1 8 -6 5 -6 -1 9 -9 -6 4 3 7 -6 4 -6 0 7 -7 3 -3 5 0 -3 -5 -5 5 9 -2 -9 -3 -4 -4 -5 6 -7 1 8 -8 -3 4 -4 0 -3 9 2 8 0 -2 6 -8 0 8 3 -1 -4 9 6 -4 -5 -3 -1 -7 -8 1 -2 1 -2 4 -2 7 4 8 8 -3 1 -2 4 6 -3 0 -2 -9 -7 -5 0 9 0 -8 -4 -4 -2 0 -1 0 8 -2 -7 8 -9 -5 9 -8 4 2 -2 5 6 0 5 -5 -4 -8 3 8 -3 3 -2 6 2 8 -9 -8 1 6 2 4 1 3 -1 8 9 -1 -7 -1 -9 -3 -4 6 -3 -6 9 7 -5 9 -4 -4 -3 -8 -6 2 8 -7 -9 -1 0 -2 0 -4 -3 -7 -2 5 -1 -9 -3 -5 9 -8 -8 4 1 0 0 -2 -9 -3 2 -9 3 3 2 -4 3 -2 6 -3 -7 -2 9 3 5 -2 -8 -5 4 4 0 -1 2 8 4 -9 -9 -1 9 1 -6 6 -9 -1 -3 -3 3 1 0 -8 5 -8 -3 -8 -7 -1 -5 1 -2 -1 8 3 2 -2 7 0 2 2 0 -1 9 5 4 4 -1 2 -3 6 1 1 -2 -5 -9 -3 9 -1 0 7 2 1 -9 -8 2 -1 6 5 -5 5 0 8 -6 -1 7 -1 2 7 -9 -9 3 -8 6 -2 -7 -9 -8 9 0 -1 -3 -1 9 -1 8 -4 -4 3 -9 5 -4 5 -8 -9 1 8 -9 -4 -2 2 0 1 3 7 1 0 1 0 -7 9 -4 -5 -3 -6 6 5 9 3 3 9 -4 2 -9 6 -6 7 8 -8 3 -6 -5 8 -2 0 -5 -1 1 7 -1 -1 4 0 4 -6 -4 0 8 9 3 7 -3 0 -7 9 5 -5 -4 4 -7 9 -6 7 -4 -9 1 0 7 1 9 2 4 6 9 0 -3 -5 2 8 -3 6 5 -9 8 -9 4 8 6 0 6 6 -1 -3 -8 -2 0 6 -8 1 1 -7 -6 7 -1 0 1 2 -2 9 -9 -1 -1 -9 6 -9 -5 -4 -6 6 2 -8 6 9 -7 8 0 0 -1 7 -2 -5 6 0 5 2 6 -5 -4 3 4 2 6 -2 2 7 -9 -3 -5 9 4 2 6 -5 -5 -7 -3 -7 2 8 2 -2 -1 0 -2 0 -3 9 3 3 3 9 1 -9 0 9 -6 -7 -8 -5 -9 9 2 -4 -5 5 1 -1 3 -6 0 0 -1 5 7 3 0 0 -7 0 -6 6 -2 -1 -8 2 9 -5 2 -3 5 -5 -4 -9 -2 -5 9 -9 1 0 1 0 -7 -4 -9 8 -7 -9 -2 -5 2 -6 -6 6 7 9 -3 5 -6 1 0 0 6 1 5 -7 0 -3 0 -7 0 -2 -8 7 9 -2 -1 -9 7 9 0 3 2 -1 0 4 7 -7 6 -1 6 -6 -1 6 -7 -4 -4 -8 -6 4 0 -2 -9 -8 -7 -2 7 0 6 -8 5 1 -2 1 -2 0 5 5 -3 1 -5 5 -4 1 -5 3 6 2 -7 0 0 4 4 -2 3 1 1 -3 7 7 -7 -4 -9 -3 -6 -9 -5 -5 -7 0 -5 -3 1 4 2 2 -7 5 0 7 4 5 4 -1 2 -6 5 -8 -6 -9 9 1 3 -4 7 1 -2 4 -1 0 9 -5 -8 -8 0 -8 -1 7 9 -1 -8 9 -4 -9 0 1 9 9 -3 5 -6 5 -4 -4 7 0 -1 -7 6 -2 -7 -1 5 -7 1 -7 5 -5 7 4 -6 -1 0 -4 7 -8 -4 -4 -3 0 -5 1 -4 -5 -9 -8 -8 -6 0 8 0 5 -7 6 4 -6 -8 5 4 -5 -1 0 5 -1 -8 -7 9 5 -7 0 0 6 -3 4 -3 -3 5 7 4 -1 -1 4 -5 -8 3 -8 -6 -5 -6 9 0 -7 1 -1 -6 -2 6 -9 -8 -6 -9 -6 -2 4 4 0 -1 4 -5 -1 2 8 0 2 8 -9 -5 -2 0 8 3 1 0 -8 -6 -9 -5 9 -7 -6 0 -3 -5 7 -4 -2 -7 -5 -4 -7 7 0 -5 0 -1 0 -7 2 0 0 -6 6 0 -7 9 6 2 9 -9 4 8 -5 9 0 9 9 -7 6 -1 -3 -2 7 9 6 -8 1 7 -6 6 9 8 8 5 -4 1 0 0 0 3 4 4 1 3 2 5 5 0 1 2 4 5 2 1 4 2 4 0 1 4 5 5 5 4 3 4 3 3 4 4 4 0 2 3 2 2 2 1 3 3 1 5 1 4 0 5 4 3 5 3 1 2 3 0 4 4 3 2 5 5 4 3 0 0 0 0 0 0 1 3 4 0 1 5 2 1 2 1 4 5 4 4 5 5 2 3 1 5 3 0 3 1 1 3 5 1 1 0 2 0 1 4 0 0 1 1 0 3 2 2 2 4 0 5 2 3 2 1 0 4 2 3 5 3 4 3 3 5 1 3 5 0 1 4 1 2 5 1 3 5 3 3 1 4 2 1 5 2 3 5 0 5 3 4 0 1 1 1 1 0 4 4 0 3 2 5 3 1 0 0 4 2 3 0 4 3 1 3 0 4 2 0 1 3 2 0 5 1 1 4 1 4 0 0 1 3 5 3 2 4 3 1 0 5 5 2 2 4 5 0 3 5 1 2 3 3 2 0 5 2 2 4 0 2 4 5 5 2 2 0 0 4 1 4 1 4 0 3 2 3 2 3 0 3 0 3 4 0 1 1 2 3 4 0 0 2 0 3 2 0 3 2 4 2 4 5 0 4 1 1 5 3 4 0 4 2 1 0 3 3 0 3 0 4 4 4 4 4 2 1 4 3 1 1 0 0 0 4 2 5 5 2 2 4 0 4 4 1 5 1 2 3 5 1 1 3 5 5 5 5 4 3 3 0 4 1 0 3 5 0 2 5 2 3 1 0 1 5 2 4 5 2 1 4 3 2 5 3 0 4 0 2 5 3 2 2 4 0 5 2 5 1 1 5 2 0 0 4 3 0 2 2 2 2 0 0 2 3 1 0 1 1 3 1 3 3 3 5 2 0 1 1 5 0 0 2 4 0 4 2 0 4 4 3 0 3 3 3 0 4 3 0 3 0 1 0 2 2 0 4 2 5 5 1 0 5 1 4 0 5 0 4 4 3 1 4 4 2 5 4 4 3 4 0 1 3 0 3 5 4 1 5 4 0 5 2 4 0 4 2 0 3 0 2 0 0 0 4 2 0 0 5 1 3 5 2 0 3 0 4 2 5 3 4 4 0 4 2 1 2 4 5 5 4 1 3 2 5 5 5 3 0 2 4 1 5 5 1 2 5 3 2 2 5 0 0 5 4 2 4 5 4 3 2 1 2 0 3 2 5 0 5 3 2 2 4 1 1 4 2 4 1 4 0 0 3 1 4 5 1 2 4 0 0 1 1 2 5 2 2 2 3 0 4 5 2 2 5 3 4 5 1 4 3 1 2 4 0 0 4 0 3 0 4 1 5 3 1 4 5 4 1 2 4 5 0 4 5 3 1 2 2 0 0 5 5 2 4 0 1 0 4 4 0 2 5 0 3 4 2 2 0 1 3 2 0 1 0 4 4 1 0 0 5 4 3 5 0 5 3 1 5 1 3 4 1 0 2 2 5 4 2 5 0 5 2 4 4 2 0 2 2 0 2 5 4 4 4 3 3 1 2 1 0 0 3 5 0 5 1 3 1 2 1 5 1 3 2 4 3 2 0 3 1 1 3 5 5 5 0 0 5 3 5 5 1 2 3 1 1 4 3 1 0 4 0 0 5 0 4 0 3 2 4 4 3 5 1 0 4 2 5 1 5 4 1 0 1 4 5 0 0 0 5 5 4 4 3 3 4 5 2 1 1 0 5 3 3 1 1 5 3 0 1 0 5 0 4 4 2 1 2 0 2 2 5 0 0 0 2 4 3 4 0 5 2 3 0 3 2 1 2 3 0 1 3 3 1 5 1 3 1 1 4 3 3 1 1 1 0 1 0 3 5 4 0 5 1 0 2 2 0 3 5 4 4 1 1 0 0 0 1 1 1 3 2 3 5 2 4 5 3 4 0 1 0 1 0 0 5 1 2 5 2 1 3 0 2 2 4 1 2 4 0 2 1 3 5 4 5 3 1 0 0 2 1 4 3 0 4 2 1 4 0 3 4 1 1 0 4 0 5 4 2 0 0 3 3 5 2 0 1 3 0 5 3 2 3 0 0 0 1 1 4 1 2 2 2 3 1 4 1 0 3 3 0 3 5 1 1 1 5 0 2 4 5 0 4 2 4 4 2 5 5 5 0 5 1 1 2 2 5 2 1 0 5 5 2 4 1 3 3 4 1 4 2 0 2 0 0 0 4 1 4 1 0 2 0 5 1 1 0 1 3 1 1 0 0 3 3 5 4 4 4 5 0 0 3 2 5 4 1 3 5 3 3 3 5 3 2 1 2 0 0 3 1 5 4 0 1 5 3 5 1 1 3 2 0 0 4 5 2 3 0 5 0 3 2 0 5 3 5 1 1 5 3 3 4 1 1 3 4 4 3 5 4 4 1 4 4 4 3 5 1 1 4 2 5 1 0 2 2 5 1 3 2 4 4 0 3 3 4 1 2 5 5 4 3 4 2 5 2 3 4 4 4 1 4 1 0 4 3 2 1 3 3 3 1 0 1 5 3 5 4 3 2 3 1 3 2 1 1 2 4 3 4 1 4 2 2 4 4 4 4 5 1 2 2 0 0 4 5 3 1 2 5 2 5 0 3 5 2 4 0 4 2 4 5 4 5 0 3 3 4 1 1 3 1 1 3 1 3 1 3 3 3 2 5 0 0 0 4 2 5 4 5 5 2 4 3 1 4 4 3 0 0 2 1 5 3 5 1 5 0 4 2 1 4 5 1 4 5 5 5 2 3 4 1 4 0 3 3 3 1 0 3 5 0 5 5 4 2 4 1 0 0 3 1 4 2 2 2 5 0 5 2 1 3 1 5 4 4 3 1 0 1 2 5 2 5 2 4 1 0 5 5 4 0 0 2 0 1 3 5 5 2 5 0 4 1 0 0 5 1 5 3 2 1 1 2 5 1 4 0 2 3 0 0 3 4 1 3 5 4 1 4 4 0 3 2 1 3 2 5 2 1 0 2 1 1 5 0 1 1 4 3 5 2 1 0 1 2 2 4 4 1 1 1 1 2 3 1 3 4 4 5 3 4 1 4 4 4 2 5 4 1 0 3 3 1 1 2 2 1 5 4 2 4 5 4 0 1 3 3 5 1 0 2 3 1 5 1 4 1 4 2 2 4 3 4 4 2 4 4 4 3 0 4 5 0 2 5 1 3 0 4 2 0 0 0 0 5 5 2 1 4 2 1 0 5 5 2 5 2 4 3 3 5 2 3 3 2 0 2 4 1 0 0 5 4 0 5 2 0 5 1 2 1 2 0 4 0 1 4 2 5 5 5 2 5 0 5 0 1 1 4 0 5 4 5 4 3 3 0 1 2 1 1 4 1 1 0 1 2 4 1 0 4 5 2 1 5 0 1 0 1 3 0 5 0 0 3 3 3 1 2 3 2 3 5 3 2 0 3 5 4 4 3 0 3 5 2 1 5 1 1 5 3 2 4 3 0 5 4 1 0 4 4 0 1 4 1 3 4 2 0 0 1 3 5 2 1 1 3 4 0 3 3 3 3 5 4 1 2 2 2 2 0 4 0 5 0 2 1 2 4 1 3 3 3 2 4 2 1 5 0 5 2 2 1 3 5 5 4 2 100000 100000 100000 -100000 -100000 100000 -100000 100000 100000 100000 -100000 -100000 -100000 100000 100000 -100000 3 5 3 19 0 2 5 17 -1000000 1000000 -1000000 -1000000 -1000000 -1000000 1000000 -1000000 -1000000 -1000000 1000000 1000000 -1000000 1000000 1000000 -1000000 -1000000 1000000 -1000000 -1000000 -1000000 -1000000 1000000 -999999
L X V - - V - - X - X X X X X X - - L L - - - - - - X X - - - - X X X - - - - X X - - - - X - - - - X X - X X - - - - X - - X X - - - - - - - X - - X - - - V X - - - X - - - - - - - - - - - - - - X - X - X X - - - X - - - - - X - - - X - - X - X - - - - - - - - X X - - - - - X - - - X - - - - - - - - - - - - X - - - - - - - - - - - - - - - X - - - - - - - - - - - - X - X - X - - - - - - - - - X - - X - - - X - - X - - - - - - - X - X - - - - - - - - - X - - - - - X - - - X - X - - X - - - - - - X - - - - - - - X X - - - - - - - - - X X - - X - - - - - - V - - V V - - - - - X - - - - - - - - - - V - - - X - - - - - - X V X - X - X - X - V - - - V - - - - - - V X - - - X - - - V X - X - - X V X - - - - - - - - - V - - - - - - - - - X - - X - - - - - - - V - - - - - - V - - - V - - - - V - - - - - V - - - V - X - - - - - - - - - - - - - - X - - - X - - X X X V - - - - - - - - - - L X - - - - - V - - - - - - X X - X - - X - - - - - - X X L X V 37252902984619140616986673709324299145942010539677306359969874598353993403320478840805561884983402094196010222878720