比赛 SBOI2022暑假快乐赛① 评测结果 WATTTTTTTT
题目名称 士兵放假了 最终得分 10
用户昵称 该账号已注销 运行时间 8.121 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2022-06-25 10:01:27
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
struct abc{
    int a,b;
}x[1010];
long long ans=0,m,k,maxn=0;
int n;
bool v[1010]={0};
int dfs(double u,int l)
{
    if(l==n)
    {
        maxn=max(maxn,(long long)u);
        return 0;
    }
    for(int i=1;i<=n;i++)
    {
        if(v[i]==0)
        {
            v[i]=1;
            if(x[i].b==1)
            {
                dfs(u+x[i].a,l+1);
            }
            if(x[i].b==2)
            {
                dfs(u-x[i].a,l+1);
            }
            if(x[i].b==3)
            {
                dfs(u*x[i].a,l+1);
            }
            if(x[i].b==4)
            {
                dfs(u/x[i].a,l+1);
            }
            v[i]=0;
        }
    }
    return 0;
}
int main(){
    freopen("holiday_and_angryF.in","r",stdin);
    freopen("holiday_and_angryF.out","w",stdout);
    cin>>n>>m>>k;
    ans=k;
    for(int i=1;i<=n;i++)
    {
        char o;
        cin>>x[i].a>>o;
        if(o=='+')x[i].b=1;
        if(o=='-')x[i].b=2;
        if(o=='*')x[i].b=3;
        if(o=='/')x[i].b=4;
    }
    for(int i=1;i<=n;i++)
    {
        v[i]=1;
        if(x[i].b==1)
        {
            dfs(k+x[i].a,1);
        }
        if(x[i].b==2)
        {
            dfs(k-x[i].a,1);
        }
        if(x[i].b==3)
        {
            dfs(k*x[i].a,1);
        }
        if(x[i].b==4)
        {
            dfs(k/x[i].a,1);
        }
        v[i]=0;
        ans=max(ans,maxn);
    }
    if(ans>m)
    cout<<"YES"<<endl;
    else
    cout<<"NO"<<endl;
    cout<<ans<<endl;
    return 0;
}