| 比赛 |
五一大礼包 |
评测结果 |
AAAAWAWAAA |
| 题目名称 |
国王游戏 |
最终得分 |
80 |
| 用户昵称 |
dream |
运行时间 |
0.058 s |
| 代码语言 |
C++ |
内存使用 |
3.74 MiB |
| 提交时间 |
2026-05-04 11:55:57 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1005,NN=605;
ll base=1e9;
int n;
struct node{
ll x[NN];
int len=1;
bool operator <(const node &t) const{
if(len==t.len){
for(int i=len;i>=1;i--){
if(x[i]!=t.x[i]) return x[i]<t.x[i];
}
return 0;
}
else{
return len<t.len;
}
}
};
struct nodee{
ll a,b;
bool operator <(const nodee &t) const{
return a*b<t.a*t.b;
}
}q[N];
void print(node a){
while(a.x[a.len]==0) a.len--;
for(int i=a.len;i>=1;i--){
int cnt=0;
int xx=a.x[i];
if(i!=a.len) {
while(xx){
cnt++;
xx/=10;
}
cnt=9-cnt;
while(cnt){
cout<<0;
cnt--;
}
}
cout<<a.x[i];
}
}
node sum,mx;
node ditime(node a,int b){
ll jw=0;
int l=a.len;
for(int i=1;i<=a.len;i++){
a.x[i]*=b;
a.x[i]+=jw;
jw=a.x[i]/base;
a.x[i]%=base;
}
if(jw){
a.x[++l]=jw;
a.len=l;
}
return a;
}
node disub(node a,int b){
ll rest=0;
for(int i=a.len;i>=1;i--){
a.x[i]=(rest*base+a.x[i]);
rest=a.x[i]%b;
a.x[i]/=b;
}
while(a.x[a.len]==0) a.len--;
return a;
}
int main(){
freopen("kinggame.in","r",stdin);
freopen("kinggame.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cin>>n;
int aa,bb;
cin>>aa>>bb;
sum.x[1]=aa;
for(int i=1;i<=n;i++){
int a,b;
cin>>a>>b;
q[i]={a,b};
}
sort(q+1,q+n+1);
for(int i=1;i<=n;i++){
node shang=disub(sum,q[i].b);
if(mx<shang){
mx=shang;
}
sum=ditime(sum,q[i].a);
}
print(mx);
return 0;
}