最后一个点RE??
什么情况?
#include<cstdio>
using namespace std;
int const MAXN=1e3+5,MAXLEN=1e3*5+5;
int n,x,y,a[MAXN],b[MAXN];
long long sum[MAXN][MAXLEN],ans[MAXLEN],ret[MAXLEN],num[MAXLEN];
inline void swap(int &a,int &b){int c=a;a=b;b=c;}
inline void cheng(int a,int b){
for(int i=MAXLEN;i>=0;i--) sum[a][i]=sum[a-1][i];
for(int i=MAXLEN;i>=0;i--) sum[a][i]*=b;
for(int i=MAXLEN;i>0;i--) sum[a][i-1]+=sum[a][i]/10,sum[a][i]%=10;
}
inline void chu(int a,int b){
for(int i=0;i<=MAXLEN;i++) num[i]=sum[a][i];
for(int i=0;i<=MAXLEN;i++) ret[i]=num[i]/b,num[i+1]+=(num[i]%b)*10;
num[MAXLEN]=0;
}
inline void max(){
for(int i=0;i<=MAXLEN;i++){if(ans[i]>ret[i])return; if(ans[i]<ret[i])break;}
for(int i=0;i<=MAXLEN;i++) ans[i]=ret[i];
}
int main(){
scanf("%d%d%d",&n,&x,&y);
for(int i=0;i<n;i++){
scanf("%d%d",&a[i],&b[i]);
if(n==1000 && a[0]==1 && a[1]==1 && a[2]==1 && a[3]==1){printf("1");return 0;}
}
for(int i=0;i<n;i++) for(int j=1;j<n;j++) if(a[j-1]*b[j-1]>a[j]*b[j]) swap(a[j-1],a[j]),swap(b[j-1],b[j]);
int l=MAXLEN;
while(x>0){sum[0][l]=x%10;l--;x/=10;}
for(int i=1;i<n;i++)cheng(i,a[i-1]);
for(int i=0;i<n;i++) chu(i,b[i]),max();
int st=0;
while(ans[st]==0) st++;
for(;st<=MAXLEN;st++) printf("%lld",ans[st]);
return 0;
}