Submission #1259914

#TimeUsernameProblemLanguageResultExecution timeMemory
1259914terracottaliteIsland Hopping (JOI24_island)C++20
2 / 100
2 ms392 KiB
#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 void solve(int n, int l) { int root = 1; int d[400]; d[0] = root; int c[400]; for (int i=1;i<n;i++) { d[i] = query(root, i); } for (int i=0;i<n;i++) { c[d[i]] = i; } char vi[400] = { 0 }; char ad[400][400] = { 0 }; int f[400] = { 0 }; vi[0] = 1; char flag[400] = { 0 }; flag[d[1]] = 1; f[d[1]]++; ad[d[1]][root] = 1; ad[root][d[1]] = 1; for (int i=1;i<=n;i++) { if (i == root) continue; if (flag[i]) continue; int x = -1; do { x = query(i, ++f[i]); if (c[x] > c[i]) flag[x] = 1; f[x]++; ad[i][x] = 1; ad[x][i] = 1; } while (c[x] > c[i]); } 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 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...