結果
| 問題 |
No.2496 LCM between Permutations
|
| ユーザー |
沙耶花
|
| 提出日時 | 2023-10-06 22:03:20 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,540 bytes |
| コンパイル時間 | 3,664 ms |
| コンパイル使用メモリ | 252,596 KB |
| 最終ジャッジ日時 | 2025-02-17 05:04:56 |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 11 WA * 17 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:72:17: warning: ‘ii’ may be used uninitialized [-Wmaybe-uninitialized]
72 | ii = (ii+1)%N;
| ~~~^~~
main.cpp:59:13: note: ‘ii’ was declared here
59 | 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 1000000000000000001
int 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];
}
}
}
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){
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;
}
沙耶花