求助
  • 板块灌水区
  • 楼主hwc2011
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/24 14:30
  • 上次更新2024/8/24 15:34:34
查看原帖
求助
1313003
hwc2011楼主2024/8/24 14:30
#include<bits/stdc++.h>
using namespace std;
int n,k,a[101];
long long x;
priority_queue<long long,vector<long long>,greater<long long> >q;
map<long long,int>vis;
inline int read(){
	int sum=0,d=1;
	char c=getchar();
	for(;!isdigit(c);c=getchar()) d=c=='-'?-d:d;
	for(;isdigit(c);c=getchar()) sum=(sum<<3)+(sum<<1)+(c&15);
	return sum*d; 
}
inline void print(int x){
	if(x<0) putchar('-'),x=x^(~(x>>31)+1)+(x>>31);
	if(x/10) print(x/10);
	putchar(x%10^48);
}
int main(){
	n=read(),k=read();
	for(register int i(1);i<=n;++i) a[i]=read(),q.push(a[i]);
	while(k--){
		x=q.top(),q.pop();
		for(register int i(1);i<=n;++i) if(!vis[(long long)a[i]*x]){
			q.push((long long)a[i]*x),vis[(long long)a[i]*x]=1;
		}
	}
	print(x);
}

这份代码卡常了,各位大佬有什么卡常技巧吗?

2024/8/24 14:30
加载中...