#include <cstdio>
#include <set>
#include <map>
typedef std::set<int> SET;
typedef std::map<int, SET> MAP;
void test(void)
{
int n, m, i, a, b;
char w[16];
MAP Aw, Bw, Bl;
scanf("%d%d", &n, &m);
for (i = 0; i < m; i++) {
scanf("%d%s%d", &a, w, &b);
if (*w == '>') {
Aw[a].insert(b);
Bl[b].insert(a);
}
else if (*w == '<') {
Bw[b].insert(a);
}
}
if (Bw.size() == n)
printf("PRZEGRANA\n");
else if (Aw.size() < n)
printf("REMIS\n");
else {
for (MAP::iterator i1 = Bl.begin(); i1 != Bl.end(); ++i1)
if (i1->second.size() < n) {
for (SET::iterator i2 = i1->second.begin(); i2 != i1->second.end(); ++i2) {
Aw[*i2].erase(i1->first);
if (!Aw[*i2].size())
Aw.erase(*i2);
}
}
if (Aw.size())
printf("WYGRANA\n");
else
printf("REMIS\n");
}
}
int main(void)
{
int t;
scanf("%d", &t);
while(t-- > 0)
test();
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 | #include <cstdio> #include <set> #include <map> typedef std::set<int> SET; typedef std::map<int, SET> MAP; void test(void) { int n, m, i, a, b; char w[16]; MAP Aw, Bw, Bl; scanf("%d%d", &n, &m); for (i = 0; i < m; i++) { scanf("%d%s%d", &a, w, &b); if (*w == '>') { Aw[a].insert(b); Bl[b].insert(a); } else if (*w == '<') { Bw[b].insert(a); } } if (Bw.size() == n) printf("PRZEGRANA\n"); else if (Aw.size() < n) printf("REMIS\n"); else { for (MAP::iterator i1 = Bl.begin(); i1 != Bl.end(); ++i1) if (i1->second.size() < n) { for (SET::iterator i2 = i1->second.begin(); i2 != i1->second.end(); ++i2) { Aw[*i2].erase(i1->first); if (!Aw[*i2].size()) Aw.erase(*i2); } } if (Aw.size()) printf("WYGRANA\n"); else printf("REMIS\n"); } } int main(void) { int t; scanf("%d", &t); while(t-- > 0) test(); return 0; } |
English