#include using namespace std; #define INF 100000000 #define MAXN 1005 #define MAXK 11 int N, K; int dp[MAXK][MAXN]; int bestFloor[MAXK][MAXN]; bool survives(int x) { string response; cout << "query " << x << "\n"; cout.flush(); cin >> response; return response == "survived"; } void printAnswer(int x) { string response; cout << "answer " << x << "\n"; cout.flush(); cin >> response; exit(0); } int main() { // freopen("date.in", "r", stdin); // freopen("date.out","w", stdout); cin >> N >> K; for (int i = 1; i <= K; i++) { for (int j = 2; j <= N; j++) { dp[i][j] = INF; for (int k = 1; k <= j; k++) { int ok = dp[i][j - k] + 1; int nok = dp[i - 1][k] + 1; int vmax = max(ok, nok); if (vmax < dp[i][j]) { dp[i][j] = vmax; bestFloor[i][j] = k; } } } } int st = 1; int dr = N; int k = K; while (st < dr) { int n = dr - st + 1; int b = bestFloor[k][n]; if (survives(st + b - 1)) { st += b; } else { dr = st + b - 1; k--; } } printAnswer(st); return 0; }