为何CE???(求大佬帮助,悬关!!!)
查看原帖
为何CE???(求大佬帮助,悬关!!!)
825033
封禁用户楼主2024/1/4 21:14

rt

#include <bits/stdc++.h>
#pragma GCC optimize(3)
#define int long long
#define rep(i,x,y,z) for(int i=(x);i<=(y);i+=(z))
#define per(i,x,y,z) for(int i=(x);i>=(y);i-=(z))
#define pb push_back
#define pii pair<int,int>
#define _1 first
#define gcd __gcd
#define _2 second
#define ld long double
#define cint const int
#define vint vector<int>
#define vpii vector<pair<int,int>>
using namespace std;

const int inf=0x3f3f3f3f;
const int mod=998244353;
const long double EPS=1e-7;
const int maxn=1.209e7;
int read() {
	int ch = getchar(), t = 1, n = 0;
	while (ch < '0' || ch > '9') {
		if (ch == '-') t = -1;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9') {
		n = n * 10 + ch - '0', ch = getchar();
	}
	return n * t;
}
void chkmin(int &x,int y) {
	x=min(x,y);
}
void chkmax(int &x,int y) {
	x=max(x,y);
}

int fpow(int a,int b) {
	if(b==0)return 1;
	if(b==1)return a;
	int ans=fpow(a,b/2);
	ans*=ans;
	ans%=mod;
	if(b%2)	ans*=a;
	return ans%mod;
}
int inv(int x) {
	return fpow(x,mod-2);
}

int p[50],c1[maxn],c2[maxn],cc1=0,cc2=0,n;
void ddo1(int cur,__int128 now) {
	if(now>1e18)return ;
	if(now<=1e18)c1[++cc1]=now;
	rep(i,cur,n/2,1)ddo1(i,now*p[i]);
}
void ddo2(int cur,__int128 now) {
	if(now>1e18)return ;
	if(now<=1e18)c2[++cc2]=now;
	rep(i,cur,n,1)ddo2(i,now*p[i]);
}

int judge(int x) {
	int l=1;
	__int128 ans=0;
	rep(i,1,cc1,1) {
		while(l<=cc2 && (__int128)c2[l]*c1[i]>x)l++;
		ans+=cc2-l+1;
	}
	return ans;
}

signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin>>n;
	rep(i,1,n,1)	cin>>p[i];
	int k;
	cin>>k;
	ddo1(1,1);
	ddo2(n/2+1,1);
	sort(c1+1,c1+1+cc1);
	sort(c2+1,c2+1+cc2);
	reverse(c2+1,c2+1+cc2);
	int l=1,r=1e18-1,ans=0;
	while(l<=r) {
		int mid=(__int128)(l+r)/2;
		if(judge(mid)<k)ans=mid,l=mid+1;
		else r=mid-1;
	}
	cout<<min(1000000000000000000,ans+1)<<endl;
	return 0;
}
2024/1/4 21:14
加载中...