为什么这个代码只有90分qwq
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1000010;
struct st
{
ll a,b;
};
ll n,a,b,size,ans[N],length,daan[N],len,tmp[N];
st e[N];
bool cmp(st x,st y)
{
if(x.a*x.b==y.a*y.b)
{
return x.b<y.b;
}
return x.a*x.b<y.a*y.b;
}
bool cmpcmp()
{
if(length==len)
{
for(int i=1;i<=len;i++)
{
if(daan[i]!=tmp[i])
{
return daan[i]>tmp[i];
}
}
}
return length>len;
}
void multiplication(ll a[],ll &len,ll b)
{
for(int i=1;i<=len;i++)
{
a[i]*=b;
}
len+=5;
for(int i=1;i<=len;i++)
{
a[i+1]+=a[i]/10;
a[i]%=10;
}
while(a[len]==0)
{
len--;
}
}
void division(ll a[],ll &len,ll b)
{
while(len>0&&a[len]==0)
{
len--;
}
memset(daan,0,sizeof(daan));
length=1;
ll tmp=0;
bool flag=false;
for(int i=len;i>=1;i--)
{
tmp=tmp*10+a[i];
daan[++length]=tmp/b;
tmp%=b;
if(!flag&&daan[length]==0)
{
length--;
}
else
{
flag=true;
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>a>>b;
for(int i=1;i<=n;i++)
{
cin>>e[i].a>>e[i].b;
}
sort(e+1,e+n+1,cmp);
ans[++size]=a;
for(int i=1;i<=n;i++)
{
division(ans,size,e[i].b);
if(cmpcmp())
{
len=length;
memcpy(tmp,daan,sizeof(daan));
}
multiplication(ans,size,e[i].a);
}
ll i=0;
while(i<=len&&tmp[i]==0)
{
i++;
}
cout<<tmp[i++];
for(;i<=len;i++)
{
cout<<tmp[i];
}
cout<<"\n";
return 0;
}