#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; }
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; } |