1 条题解
-
0
#include<bits/stdc++.h> using namespace std; const long long MAX=1000000000000000000; struct boss { long long a; int b; }p[5005]; int n,ans,t,f; long long m,k,x,y; bool cmp(boss x,boss y) { if(x.a!=y.a) return x.a<y.a; return x.b<y.b; } void check(long long x,long long &l,long long &r) { l=1,r=0; for(int i=1;i<=n;i++) l+=(x-1)/p[i].a; for(int i=1;i<=n;i++) r+=x/p[i].a; } int main() { cin>>t; while(t--) { cin>>n>>m>>k; for(int i=1;i<=n;i++) { cin>>p[i].a; p[i].b=i; } sort(p+1,p+1+n,cmp); if(m!=0) for(int i=1;i<=n;i++) k+=m/p[i].a; long long minn=p[1].a; for(int i=1;i<=n;i++) minn=min(p[i].a,minn); long long l=1,r=MAX,mid; while(l<=r) { mid=(l+r)/2; check(mid,x,y); // cout<<"x,y="<<x<<' '<<y<<endl; if(k>y) l=mid+1; else if(k<x) r=mid-1; else break; } if(l>r) { cout<<-1<<endl; continue; } // cout<<"m="<<mid<<endl; ans=0; for(int i=1;i<=n;i++) if(mid%p[i].a==0) { ans++; if(ans==k-x+1) { cout<<p[i].b-1<<endl; break; } } } }
- 1
信息
- ID
- 498
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 19
- 已通过
- 2
- 上传者