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
#include<stdio.h>
#include<stdlib.h>
#include<iostream>

using namespace std;

int main(int argc, char** argv) {
	int t;	/// liczba przypadków testowych
	int n;	/// liczba talii kart
	int m;	/// liczba faktów
	bool winA[100001];	/// tablica z informacją o taliach (true = istnieje fakt, że talia jest wygrywająca dla gracza A - Bajtka)
	bool winB[100001];  /// tablica z informacją o taliach (true = istnieje fakt, że talia jest wygrywająca dla gracza B - Bitka)
	int winACount, winBCount;	/// liczniki wygranych talii kart dla każdego z graczy

	std::ios::sync_with_stdio(false);	// przyspieszenie wejścia/wyjścia

	cin>>t;

	for(int tn=0;tn<t;++tn) {	// per test
		cin>>n>>m;
		for(int i=1;i<=n;++i) winA[i]=winB[i]=false;	// zerujemy tablice dla testu (false = brak faktu)
		winACount=0;
		winBCount=0;

        // odczytujemy dane
        for(int i=0;i<m;++i) {
			int a, b;
			char w;
			cin>>a>>w>>b;
            if(w=='>') {
				if(!winA[a]) {	// jeżeli talia nie była jeszcze oznaczona jako wygrywająca
					winA[a]=true;	// to oznaczamy
					++winACount;	// i zliczamy
				}
            } else {
            	if(!winB[b]) {	// jeżeli talia nie była jeszcze oznaczona jako wygrywająca
					winB[b]=true;	// to oznaczamy
					++winBCount;	// i zliczamy
            	}
            }
        }
        if(winACount==n) cout<<"WYGRANA\n";		// jeżeli wygrywające są wszystkie talie Bajtka, to znaczy że po wyrzuceniu dowolnych n-1 i tak zostanie talia wygrywająca
        else if(winBCount==n) cout<<"PRZEGRANA\n";	// jeżeli Bajtek nie ma wszystkich talii wygrywających, to oznacza, że na koniec zostanie z jedną z takich; jeżeli Bitek ma same wygrywające to, po odrzuceniu n-1 będzie miał wygrywającą
        else cout<<"REMIS\n";	// na koniec; jeżeli jeden i drugi gracz nie mają wszystkich wygrywających, to zostaną im te, które nie gwarantując sukcesu, a więc remis
	}

	return 0;
}