#include <stdio.h>
#include <vector>
using namespace std;
#ifndef TEST
#include "island.h"
#endif
#ifdef TEST
int query(int x, int k) {
printf("? %d %d\n", x, k);
fflush(stdout);
int ret;
scanf("%d", &ret);
return ret;
}
void answer(int x, int y) {
printf("! %d %d\n", x, y);
fflush(stdout);
}
#endif
void solve(int n, int l) {
/*
set<int> unvi;
for (int i=1;i<=n;i++) {
unvi.insert(i);
}
*/
int a[400][2];
for (int i=1;i<=n;i++) {
a[i][0] = query(i, 1);
a[i][1] = query(i, 2);
}
int mat[400][400];
for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) mat[i][j] = 0;
for (int i=1;i<=n;i++) {
mat[i][a[i][0]] = 1;
mat[a[i][0]][i] = 1;
if (mat[i][1] != mat[a[i][0]][1] && mat[i][1] != mat[a[i][0]][0]) {
mat[i][a[i][1]] = 1;
mat[a[i][1]][i] = 1;
}
}
for (int i=1;i<=n;i++) {
for (int j=1;j<=n;j++) {
if (mat[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... |