//Michał Maciaszek #include <bits/stdc++.h> #include <unistd.h> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); uintmax_t n = 0; //ilość przypadków testowych intmax_t wynik = 0; cin >> n; for(uintmax_t i = 0; i < n; ++i) { wynik = 0; uintmax_t a; //ilość talii uintmax_t N = 0; //ilość par cin >> a >> N; uintmax_t* A = new uintmax_t[a]; // z iloma przegrywa uintmax_t* B = new uintmax_t[a]; fill(A, A+a, 0); fill(B, B+a, 0); uintmax_t* CA = new uintmax_t[a]; uintmax_t* CB = new uintmax_t[a]; CA[0] = CB[0] = a; fill(CA+1, CA+a, 0); fill(CB+1, CB+a, 0); for(uintmax_t j = 0; j < N; ++j) { uintmax_t x, y; char znak; cin >> x >> znak >> y; if(wynik == 0) { switch(znak) { case '<': ++A[x-1]; if(A[x-1] == a) { wynik = -1; } break; case '>': ++B[y-1]; if(B[y-1] == a) { wynik = 1; } break; } } } if(wynik == 0) { for(uintmax_t j = 0; j < a; ++j) { ++CA[A[j]]; --CA[0]; ++CB[B[j]]; --CB[0]; } for(uintmax_t j = 1; j < a; ++j) { if(B[j] + CB[B[j]] - 1 > a) { if(wynik == -1) { wynik = 0; break; } wynik = 1; } if(A[j] + CA[A[j]] - 1 > a) { if(wynik == 1) { wynik = 0; break; } wynik = -1; } } if((CB[0] != 0 && wynik == 1) || (CA[0] != 0 && wynik == -1)) { wynik = 0; } } switch(wynik) { case 1: cout << "WYGRANA" << endl; break; case -1: cout << "PRZEGRANA" << endl; break; case 0: cout << "REMIS" << endl; break; } } return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | //Michał Maciaszek #include <bits/stdc++.h> #include <unistd.h> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); uintmax_t n = 0; //ilość przypadków testowych intmax_t wynik = 0; cin >> n; for(uintmax_t i = 0; i < n; ++i) { wynik = 0; uintmax_t a; //ilość talii uintmax_t N = 0; //ilość par cin >> a >> N; uintmax_t* A = new uintmax_t[a]; // z iloma przegrywa uintmax_t* B = new uintmax_t[a]; fill(A, A+a, 0); fill(B, B+a, 0); uintmax_t* CA = new uintmax_t[a]; uintmax_t* CB = new uintmax_t[a]; CA[0] = CB[0] = a; fill(CA+1, CA+a, 0); fill(CB+1, CB+a, 0); for(uintmax_t j = 0; j < N; ++j) { uintmax_t x, y; char znak; cin >> x >> znak >> y; if(wynik == 0) { switch(znak) { case '<': ++A[x-1]; if(A[x-1] == a) { wynik = -1; } break; case '>': ++B[y-1]; if(B[y-1] == a) { wynik = 1; } break; } } } if(wynik == 0) { for(uintmax_t j = 0; j < a; ++j) { ++CA[A[j]]; --CA[0]; ++CB[B[j]]; --CB[0]; } for(uintmax_t j = 1; j < a; ++j) { if(B[j] + CB[B[j]] - 1 > a) { if(wynik == -1) { wynik = 0; break; } wynik = 1; } if(A[j] + CA[A[j]] - 1 > a) { if(wynik == 1) { wynik = 0; break; } wynik = -1; } } if((CB[0] != 0 && wynik == 1) || (CA[0] != 0 && wynik == -1)) { wynik = 0; } } switch(wynik) { case 1: cout << "WYGRANA" << endl; break; case -1: cout << "PRZEGRANA" << endl; break; case 0: cout << "REMIS" << endl; break; } } return 0; } |