結果
問題 | No.2496 LCM between Permutations |
ユーザー |
![]() |
提出日時 | 2023-10-06 22:08:24 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 114 ms / 2,000 ms |
コード長 | 1,936 bytes |
コンパイル時間 | 4,221 ms |
コンパイル使用メモリ | 253,404 KB |
最終ジャッジ日時 | 2025-02-17 05:08:39 |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 28 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:101:17: warning: ‘ii’ may be used uninitialized [-Wmaybe-uninitialized] 101 | ii = (ii+1)%N; | ~~~^~~ main.cpp:88:13: note: ‘ii’ was declared here 88 | int ii; | ^~
ソースコード
#include <stdio.h>#include <atcoder/all>#include <bits/stdc++.h>using namespace std;using namespace atcoder;using mint = modint998244353;#define rep(i,n) for (int i = 0; i < (n); ++i)#define Inf32 1000000001#define Inf64 1000000000000000001int N;bool is_good(int n){if(n*2<=N)return false;for(int i=2;i*i<=n;i++){if(n%i==0)return false;}return true;}int query(int i,int j){cout<<"? "<<i+1<<' '<<j+1<<endl;int ret;cin>>ret;return ret;}void answer(vector<int> a,vector<int> b){cout<<"!";rep(i,a.size()){cout<<' '<<a[i];}rep(i,a.size()){cout<<' '<<b[i];}cout<<endl;exit(0);}int main(){cin>>N;if(N==1){answer({1},{1});}vector<int> a(N,-1),b(N,-1);{vector<int> ret(N);rep(i,N){ret[i] = query(0,i);}a[0] = *min_element(ret.begin(),ret.end());bool f = is_good(a[0]);rep(i,N){if(a[0]==ret[i])continue;if(f || is_good(ret[i]/a[0])){b[i] = ret[i] / a[0];}}if(f){rep(i,N){if(a[0]==ret[i]){int r = query(1,i);if(r%a[0]==0){b[i] = a[0];for(int j=i+1;j<N;j++){if(a[0]==ret[j]){b[j] = 1;}}}else{b[i] = 1;for(int j=i+1;j<N;j++){if(a[0]==ret[j]){b[j] = a[0];}}}break;}}}}int ii;rep(i,N){if(b[i]>0&&is_good(b[i])){ii = i;break;}}for(int i=1;i<N;i++){int r = query(i,ii);if(r==b[ii])continue;a[i] = r / b[ii];}int x = b[ii];ii = (ii+1)%N;rep(i,N){if(a[i]==-1){int r = query(i,ii);if(r%x== 0){a[i] = x;for(int j=i+1;j<N;j++){if(a[j]==-1)a[j] = 1;}}else{a[i] = 1;for(int j=i+1;j<N;j++){if(a[j]==-1)a[j] = x;}}break;}}rep(i,N){if(a[i]==1)ii = i;}rep(i,N){if(b[i]==-1){b[i] = query(ii,i);}}answer(a,b);return 0;}