40tps 救命!!!!
查看原帖
40tps 救命!!!!
1112605
LQ_Q楼主2024/5/3 14:33
#include<bits/stdc++.h>
using namespace std;
long long int ss,kk;
int s[15],b[15],n,flag[15],z=0,a[15],ans=10000,sb=1;
void dfs(int step){
	if(step>z/n+1){
		ss=1;
		kk=0;
		for(int i=1;i<=step-1;i++){
			ss*=s[a[i]];
			kk+=b[a[i]];
		}
		if(ans>max(ss,kk)-min(ss,kk)) ans=max(ss,kk)-min(ss,kk);
//		printf("%d ",ans);
		z++;
		return ;
	}
	for(int i=1;i<=n;i++){
		if(flag[i]==0){
			flag[i]=1;
			a[sb]=i;
			sb++;
			dfs(step+1);
			flag[i]=0;
			sb--;
		}
		if(i==n&&z/n+1<n) i=1;
	}
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d%d",&s[i],&b[i]);
	}
	dfs(1);
	printf("%d",ans);
}
2024/5/3 14:33
加载中...