#include <bits/stdc++.h>
using namespace std;
// #define DEBUG
#ifdef DEBUG
#define dbg(x) cerr << #x << " = " << x << '\n';
#else
#define dbg(x) if (0) cerr << "";
#endif
#define ONE 'P'
#define ZERO 'K'
#define WIN 'P'
#define LOSE 'K'
int main() {
string kto;
cin >> kto;
int n, t;
cin >> n >> t;
while (t--) {
vector<bool> ciag(n);
char ch;
for (int i = 0; i < n; i++) {
cin >> ch;
ciag[i] = (ch == '1');
}
vector<bool> wynik(n);
int mojePkt = 0;
int drugiPkt = 0;
int idx = 0;
int loops = 0;
while (idx < n) {
#ifdef DEBUG
cerr << "=====================\n";
#endif
dbg(mojePkt);
dbg(drugiPkt);
dbg(idx);
if (mojePkt == drugiPkt) {
char mojRuch = (ciag[idx] ? ONE : ZERO);
cout << mojRuch << '\n' << flush;
char ruchP;
cin >> ruchP;
if (mojRuch == 'P' && ruchP == 'K') mojePkt++;
else if (mojRuch == 'K' && ruchP == 'P') drugiPkt++;
wynik[idx] = (ruchP == ONE);
idx++;
} else {
if (mojePkt > drugiPkt) {
cout << LOSE << '\n' << flush;
} else {
cout << WIN << '\n' << flush;
}
char ruchP;
cin >> ruchP;
if (mojePkt > drugiPkt) {
if (ruchP != WIN) cout << "BLYAT!\n" << flush;
drugiPkt++;
} else {
if (ruchP != LOSE) cout << "BLYAT!\n" << flush;
mojePkt++;
}
}
loops++;
if (loops >= 2*n) {
cout << "BLYAT 2!\n" << flush;
}
}
cout << "! ";
for (int i = 0; i < n; i++) {
cout << wynik[i];
}
cout << flush;
}
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 | #include <bits/stdc++.h> using namespace std; // #define DEBUG #ifdef DEBUG #define dbg(x) cerr << #x << " = " << x << '\n'; #else #define dbg(x) if (0) cerr << ""; #endif #define ONE 'P' #define ZERO 'K' #define WIN 'P' #define LOSE 'K' int main() { string kto; cin >> kto; int n, t; cin >> n >> t; while (t--) { vector<bool> ciag(n); char ch; for (int i = 0; i < n; i++) { cin >> ch; ciag[i] = (ch == '1'); } vector<bool> wynik(n); int mojePkt = 0; int drugiPkt = 0; int idx = 0; int loops = 0; while (idx < n) { #ifdef DEBUG cerr << "=====================\n"; #endif dbg(mojePkt); dbg(drugiPkt); dbg(idx); if (mojePkt == drugiPkt) { char mojRuch = (ciag[idx] ? ONE : ZERO); cout << mojRuch << '\n' << flush; char ruchP; cin >> ruchP; if (mojRuch == 'P' && ruchP == 'K') mojePkt++; else if (mojRuch == 'K' && ruchP == 'P') drugiPkt++; wynik[idx] = (ruchP == ONE); idx++; } else { if (mojePkt > drugiPkt) { cout << LOSE << '\n' << flush; } else { cout << WIN << '\n' << flush; } char ruchP; cin >> ruchP; if (mojePkt > drugiPkt) { if (ruchP != WIN) cout << "BLYAT!\n" << flush; drugiPkt++; } else { if (ruchP != LOSE) cout << "BLYAT!\n" << flush; mojePkt++; } } loops++; if (loops >= 2*n) { cout << "BLYAT 2!\n" << flush; } } cout << "! "; for (int i = 0; i < n; i++) { cout << wynik[i]; } cout << flush; } return 0; } |
English