#include <algorithm> #include <iostream> #include <vector> typedef unsigned int smallnum; typedef unsigned char xsnum; // Some flags const int WIN_FLAG = 1; const int LOSE_FLAG = -1; const int DRAW_FLAG = 0; smallnum solve_case() { smallnum n, m; scanf("%u %u\n", &n, &m); // For storing the data std::vector<xsnum> second_is_hitting(n); std::vector<smallnum> second_is_hit_counter(n); for (smallnum i = 0; i < m; i++) { smallnum a, b; char w; scanf("%u %c %u\n", &a, &w, &b); switch (w) { case '<': second_is_hitting[b-1] = 1; break; case '>': second_is_hit_counter[b-1]++; break; } } bool are_all_hitting = ( std::find(second_is_hitting.begin(), second_is_hitting.end(), 0) == second_is_hitting.end() ); if (are_all_hitting) { return LOSE_FLAG; } bool is_one_hit_by_all = ( std::find(second_is_hit_counter.begin(), second_is_hit_counter.end(), n) != second_is_hit_counter.end() ); if (is_one_hit_by_all) { return WIN_FLAG; } return DRAW_FLAG; } int main() { // Step 1. Get the data smallnum t; scanf("%u\n", &t); // Solve t cases for (smallnum i = 0; i < t; i++) { int case_result = solve_case(); switch (case_result) { case WIN_FLAG: printf("WYGRANA\n"); break; case LOSE_FLAG: printf("PRZEGRANA\n"); break; case DRAW_FLAG: printf("REMIS\n"); 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 | #include <algorithm> #include <iostream> #include <vector> typedef unsigned int smallnum; typedef unsigned char xsnum; // Some flags const int WIN_FLAG = 1; const int LOSE_FLAG = -1; const int DRAW_FLAG = 0; smallnum solve_case() { smallnum n, m; scanf("%u %u\n", &n, &m); // For storing the data std::vector<xsnum> second_is_hitting(n); std::vector<smallnum> second_is_hit_counter(n); for (smallnum i = 0; i < m; i++) { smallnum a, b; char w; scanf("%u %c %u\n", &a, &w, &b); switch (w) { case '<': second_is_hitting[b-1] = 1; break; case '>': second_is_hit_counter[b-1]++; break; } } bool are_all_hitting = ( std::find(second_is_hitting.begin(), second_is_hitting.end(), 0) == second_is_hitting.end() ); if (are_all_hitting) { return LOSE_FLAG; } bool is_one_hit_by_all = ( std::find(second_is_hit_counter.begin(), second_is_hit_counter.end(), n) != second_is_hit_counter.end() ); if (is_one_hit_by_all) { return WIN_FLAG; } return DRAW_FLAG; } int main() { // Step 1. Get the data smallnum t; scanf("%u\n", &t); // Solve t cases for (smallnum i = 0; i < t; i++) { int case_result = solve_case(); switch (case_result) { case WIN_FLAG: printf("WYGRANA\n"); break; case LOSE_FLAG: printf("PRZEGRANA\n"); break; case DRAW_FLAG: printf("REMIS\n"); break; } } return 0; } |