TLE没救了
查看原帖
TLE没救了
194790
祸榊__楼主2020/7/29 16:11
#include<cstdio>
#include<cstdlib>
#define li(i,j,k) for(register int i=j ; i<=k ; i++)
#define si(i,j,k) for(register int i=j ; i>=k ; i--)
int v,n;
int vec[31];
bool used[31]={false};
int ans=10000000;
inline int read(){
	int x=0,f=1;
	char ch=getchar();
	while(ch<'0' || ch>'9'){
		if(ch=='-')f=-1;
		ch=getchar();
	}
	while(ch>='0' && ch<='9'){
		x=(x<<3)+(x<<1)+ch-'0';
		ch=getchar();
	}
	return x*f;
}
int min(int a,int b){
	return a<b?a:b;
}
int Iw(int sum){
	ans=min(ans,v-sum);
	if(ans==0){
		printf("%d\n",ans);
		exit(0);
	}
	li(i,1,n){
		if(!used[i] && sum+vec[i]<=v){
			used[i]=true;
			Iw(sum+vec[i]);
			used[i]=false;
		}
	}
	return 0;
}
int main(){
	v=read(),n=read();
	li(i,1,n){
		vec[i]=read();
	}
	Iw(0);
	printf("%d\n",ans);
	return 0;
}
2020/7/29 16:11
加载中...