提交时间:2024-10-09 17:25:36
运行 ID: 33474
// #pragma GCC optimize("Ofast") #include <bits/stdc++.h> using namespace std; #define endl "\n" #define int long long #define double long double #define pii pair<int,int> #define p1(x) x.first #define p2(x) x.second int pr[2000003]; double p[2003000]; int a[2000300]; int n,m,c; const int M=1e9+7; inline bool cmp(int x,int y){ return p[x]>p[y]; } inline int gcd(int a,int b){ return b==0?a:gcd(b,a%b); } inline int qp(int a,int x){ int res=1; while(x){ if(x&1)res=res*a%M; a=a*a%M; x>>=1; } return res; } inline int inv(int x){return qp(x,M-2);} inline double qp(double a,int x){ double res=1; while(x){ if(x&1)res=res*a; a=a*a; x>>=1; } return res; } inline double calceq(double p,int a,double q,int b){ return qp(p,b-1)*qp(q,a-1)*(1-p)*(1-q)/(1-qp(p,b)*qp(q,a)); } inline double CALC(double p,int a,double q,int b); inline double calc(double p,int a,double q,int b){ int t=gcd(a,b); a/=t,b/=t; int k=0,c=0; if(a)k=b/a,c=b%a; // cerr<<p<<" "<<a<<" "<<q<<" "<<b<<" "<<k<<" "<<c<<" "<<1/(1-q)-1<<endl;cerr.flush(); if(k!=0) return calc(p,a,q*qp(p,k),c); else if(c==0){return 1/(1-q)-1;} else{ double x=CALC(q,b,p,a); // cerr<<x<<" "; x=(1-x-calceq(p,a,q,b)); // cerr<<x<<"!"<<p<<" "<<a<<" "<<q<<" "<<b<<" "<<calceq(p,a,q,b)<<endl;cerr.flush(); return x*q/(1-q); } } inline double CALC(double p,int a,double q,int b){ return (1-q)/q*calc(p,a,q,b); } signed main(){ ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); // int C=clock(); // freopen("genshin.in","r",stdin); // freopen("genshin.out","w",stdout); // cout<<CALC(0.333333,2,0.666667,1)<<endl; // return 0; int t; cin>>t; while(t--){ cin>>n>>m>>c; for(int i=1;i<=n;i++) cin>>p[i]>>a[i],pr[i]=i,p[i]/=c; sort(pr+1,pr+n+1,cmp); vector<int>T; int mx=0; for(int i=1;i<=n;i++) if(a[pr[i]]>mx){ mx=a[pr[i]]; T.push_back(pr[i]); } for(int i=1;i<=m;i++){ double q; int b; cin>>q>>b; q/=c; int x=0; double mx=0; for(int i:T){ // cerr<<i<<endl; double w=CALC(p[i],a[i],q,b); if(w>mx)mx=w,x=i; } printf("%lld %.10Lf %lld\n",x,mx,0ll); // return 0; } } cout.flush(); return 0; }