100pts但是WA?求调!(玄关)
查看原帖
100pts但是WA?求调!(玄关)
1072849
Walkzz楼主2025/1/19 13:28

最后一个点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;
}
2025/1/19 13:28
加载中...