rt
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=9999999,Q=9999999;//暂且先写27pts数据
struct node{
int fm,fz;//分母 分子
double fsz;//存分数值,方便比较大小
}s[N];
int n,q,cnt,a[N],b[N],c[Q];
bool cmp(node x,node y){
return x.fsz<y.fsz;
}//比较分数值的大小
void init(){//准备工作
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
cin>>b[i];
}
for(int i=1;i<=q;i++){
cin>>c[i];
}
}
void wrt(){//收取分数
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cnt++;//多一个数,记一次
s[cnt].fz=a[i];
s[cnt].fm=b[j];//录入
int gcdd=__gcd(a[i],b[j]);
s[cnt].fm/=gcdd;
s[cnt].fz/=gcdd;//化简
s[cnt].fsz=s[cnt].fz*1.0/s[cnt].fm;
//收取具体值
}
}
//收取(收录)数据完成
}
void prt(){
for(int i=1;i<=q;i++){
cout<<s[c[i]].fz<<" "<<s[c[i]].fm<<"\n";
}
}
signed main(){
init();
wrt();
sort(s+1,s+1+cnt,cmp);
prt();
return 0;
}
Sub 1 2 全A,其他全MLE。
玄关。