Submission #490078

#TimeUsernameProblemLanguageResultExecution timeMemory
490078rainboyZagonetka (COI18_zagonetka)C11
100 / 100
85 ms328 KiB
#include <stdio.h> #include <string.h> #define N 100 int n; int query(int *ii) { static int pp[N]; int i, x; printf("query"); for (i = 0; i < n; i++) pp[ii[i]] = i + 1; for (i = 0; i < n; i++) printf(" %d", pp[i]); printf("\n"), fflush(stdout); scanf("%d", &x); return x; } char adj[N][N]; int dd[N]; int main() { static int ii[N], aa[N], bb[N]; int i, j, k, a, b, c; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d", &a), a--; ii[a] = i; } for (b = 1; b < n; b++) for (a = b - 1, c = b; a >= 0; a--) { int tmp; tmp = ii[a]; for (k = a; k < c; k++) ii[k] = ii[k + 1]; ii[c] = tmp; if (!query(ii)) { tmp = ii[c]; for (k = c; k > a; k--) ii[k] = ii[k - 1]; ii[a] = tmp; adj[ii[a]][ii[c]] = 1; } else c--; } for (i = 0; i < n; i++) { dd[i] = 0; for (j = 0; j < n; j++) if (adj[i][j]) dd[i]++; } for (a = n - 1; a >= 0; a--) { for (j = n - 1; j >= 0; j--) if (dd[j] == 0) break; dd[j] = -1, aa[j] = a; for (i = 0; i < n; i++) if (adj[i][j]) dd[i]--; } for (j = 0; j < n; j++) { dd[j] = 0; for (i = 0; i < n; i++) if (adj[i][j]) dd[j]++; } for (a = 0; a < n; a++) { for (i = n - 1; i >= 0; i--) if (dd[i] == 0) break; dd[i] = -1, bb[i] = a; for (j = 0; j < n; j++) if (adj[i][j]) dd[j]--; } printf("end\n"); for (i = 0; i < n; i++) printf("%d ", aa[i] + 1); printf("\n"); for (i = 0; i < n; i++) printf("%d ", bb[i] + 1); printf("\n"); return 0; }

Compilation message (stderr)

zagonetka.c: In function 'query':
zagonetka.c:18:2: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   18 |  scanf("%d", &x);
      |  ^~~~~~~~~~~~~~~
zagonetka.c: In function 'main':
zagonetka.c:28:2: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   28 |  scanf("%d", &n);
      |  ^~~~~~~~~~~~~~~
zagonetka.c:30:3: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   30 |   scanf("%d", &a), a--;
      |   ^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...