Submission #1257910

#TimeUsernameProblemLanguageResultExecution timeMemory
1257910terracottaliteIsland Hopping (JOI24_island)C++20
35 / 100
3 ms904 KiB
#include <stdio.h>
#include <vector>
using namespace std;

//#define TEST

#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 (a[i][1] != a[a[i][0]][1] && a[i][1] != a[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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...