結果
問題 | No.2496 LCM between Permutations |
ユーザー |
![]() |
提出日時 | 2023-10-07 01:10:19 |
言語 | C (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 110 ms / 2,000 ms |
コード長 | 1,746 bytes |
コンパイル時間 | 173 ms |
コンパイル使用メモリ | 30,848 KB |
実行使用メモリ | 25,476 KB |
平均クエリ数 | 953.10 |
最終ジャッジ日時 | 2024-07-26 17:38:59 |
合計ジャッジ時間 | 3,326 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 28 |
ソースコード
#include <stdio.h>int main () {int n = 0;int x = 0;int res = 0;int a[1000] = {};int b[1000] = {};int flag[1001] = {};int max_p = 0;int max_p_idx = 0;int one_idx[2] = {};int a_idx = 1;res = scanf("%d", &n);if (n <= 1) {printf("! 1 1\n");return 0;}for (int i = 2; 2*i <= n; i++) {if (flag[i] <= 0) {for (int j = 2; j*i <= n; j++) {flag[i*j] = 1;}}}max_p = n;while (flag[max_p] > 0) {max_p--;}printf("? 1 1\n");fflush(stdout);res = scanf("%d", &x);if (x%max_p == 0) {a_idx = 2;printf("? 2 1\n");fflush(stdout);res = scanf("%d", &x);if (x%max_p == 0) {max_p_idx = 1;b[0] = max_p;}}for (int i = 1; i < n; i++) {printf("? %d %d\n", a_idx, i+1);fflush(stdout);res = scanf("%d", &x);if (x%max_p == 0 && max_p_idx <= 0) {max_p_idx = i+1;b[i] = max_p;}}for (int i = 0; i < n; i++) {printf("? %d %d\n", i+1, max_p_idx);fflush(stdout);res = scanf("%d", &x);a[i] = x/max_p;if (x == max_p && one_idx[0] > 0) {one_idx[1] = i+1;} else if (x == max_p) {one_idx[0] = i+1;}}for (int i = 0; i < n; i++) {if (b[i] <= 0) {printf("? %d %d\n", one_idx[0], i+1);fflush(stdout);res = scanf("%d", &x);if (x%max_p == 0) {a[one_idx[0]-1] = max_p;b[i] = x/max_p;} else {a[one_idx[1]-1] = max_p;b[i] = x;}}}printf("!");for (int i = 0; i < n; i++) {printf(" %d", a[i]);}for (int i = 0; i < n; i++) {printf(" %d", b[i]);}printf("\n");return 0;}