部分分玄关球条
查看原帖
部分分玄关球条
753837
Ginka_楼主2024/11/23 16:35
#include<bits/stdc++.h>
#define N 2001000
#define int long long
#define mod 1000000007
using namespace std;
int n,k,l,r;
int dp[N][15],f[N][15];
signed a[N];
int ans=0,maxn;
signed main()
{
	cin>>n>>k>>l>>r;
	for(int i=1;i<=n;i++) {cin>>a[i];}
	sort(a+1,a+1+n);
	for(int i=1;i<=n;i++) dp[i][1]=1;
	for(int i=1;i<=n;i++) f[i][1]=a[i];
	for(int i=1;i<=k;i++)
	{
		for(int j=1;j<=n;j++)
		{
			for(int p=1;p<=n;p++)
			{
				if(a[p]*l<=a[j]&&a[p]*r>=a[j])
				{
					dp[j][i]+=dp[p][i-1];
					f[j][i]=max(f[j][i],f[p][i-1]+a[j]);
				}
			}
		}
	}
	for(int i=k;i<=n;i++) ans+=dp[i][k];
	for(int i=0;i<=n;i++) maxn=max(f[i][k],maxn);
	if(ans==0)
	{
		cout<<"0"<<endl<<"0";
		return 0;
	}
	cout<<ans%mod<<endl<<maxn%mod;
	return 0;
}

本来想写40部分分,但只有30pts。。。

玄关求条

2024/11/23 16:35
加载中...