| 比赛 |
五一大礼包 |
评测结果 |
AAAAAAAAAA |
| 题目名称 |
国王游戏 |
最终得分 |
100 |
| 用户昵称 |
ChenBp |
运行时间 |
0.137 s |
| 代码语言 |
C++ |
内存使用 |
3.70 MiB |
| 提交时间 |
2026-05-04 11:14:06 |
显示代码纯文本
#include<iostream>
#include<algorithm>
#include<stack>
#include<cstdio>
using namespace std;
typedef long long ll;
struct node{
int a,b;
}a[1003];
bool cmp(node x,node y){
return (ll)x.a*x.b<y.a*y.b;
// return (ll)x.a*y.b<(ll)y.a*x.b;
}
int tms[1000006],ans[1000006],tmp[1000006];
int len1,len2,len3;
void ch(int x){
ll jw=0;
for(int i=1;i<=len1;i++){
jw+=tms[i]*x;
tms[i]=jw%10;
jw/=10;
}
while(jw){
tms[++len1]=jw%10;
jw/=10;
}
}
void di(int x){
ll tw=0;
for(int i=1;i<=len1;i++) tmp[i]=0;
for(int i=len1;i>=1;i--){
tw=tw*10+tms[i];
tmp[i]=tw/x;
tw%=x;
}
len3=len1;
while(len3>=2&&tmp[len3]==0) len3--;
}
void add(){
for(int i=1;i<=max(len2,len3);i++){
ans[i]+=tmp[i];
ans[i+1]+=ans[i]/10;
ans[i]%=10;
}
len2=max(len2,len3);
if(ans[len2+1]) len2=len2+1;
for(int i=1;i<=len3;i++){
tmp[i]=0;
}
}
void mx(){
if(len3<len2) return;
if(len3==len2){
for(int i=len2;i>=1;i--){
if(ans[i]>tmp[i]) return;
if(ans[i]<tmp[i]) break;
}
}
len2=len3;
for(int i=1;i<=len3;i++){
ans[i]=tmp[i];
}
}
int main(){
freopen("kinggame.in","r",stdin);
freopen("kinggame.out","w",stdout);
int n;
cin>>n;
long long ga,gb;
cin>>ga>>gb;
for(int i=1;i<=n;i++){
cin>>a[i].a>>a[i].b;
}
sort(a+1,a+1+n,cmp);
tms[1]=1;
len1=1;
ch(ga);
for(int i=1;i<=n;i++){
di(a[i].b);
// for(int j=len3;j>=1;j--){
// cout<<tmp[j];
// }
// cout<<endl;
mx();
ch(a[i].a);
}
for(int i=len2;i>=1;i--){
cout<<ans[i];
}
// long long ans=0;
// for(int i=1;i<=n;i++){
// ans=max(ans,ga/a[i].b);
// ga*=a[i].a;
// }
// cout<<ans;
return 0;
}