#include <stdio.h>
//#define TEST
#ifndef TEST
#include "island.h"
#else
int query(int x, int k) {
printf("? %d %d\n", x, k);
fflush(stdout);
int ret;
scanf("%d", &ret);
return ret;
}
void answer(int i, int j) {
printf("! %d %d\n", i, j);
fflush(stdout);
}
#endif
char vi[400] = { 0 };
char ad[400][400] = { 0 };
int c[400];
int d[400];
void solve(int n, int l) {
int root = 1;
d[0] = root;
for (int i=1;i<n;i++) {
d[i] = query(root, i);
}
for (int i=0;i<n;i++) {
c[d[i]] = i;
}
vi[0] = 1;
for (int i=1;i<n;i++) {
int y = d[i];
if (vi[y]) continue;
int x = -1;
int v = 1;
do {
x = query(y, v++);
vi[x] = 1;
ad[y][x] = 1;
ad[x][y] = 1;
} while (c[x] > c[y]);
}
for (int i=1;i<=n;i++) {
for (int j=1;j<=n;j++) {
if (ad[i][j] && i < j) {
answer(i, j);
}
}
}
}
#ifdef TEST
int main() {
int n, l;
scanf("%d %d", &n, &l);
solve(n, l);
}
#endif
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |