美文网首页
CodeFoeces-550B

CodeFoeces-550B

作者: ss5smi | 来源:发表于2018-03-06 09:23 被阅读0次

    题目

    原题链接:B. Preparing Olympiad

    题意

    给出一串数字,要求找出长度大于2,和不小于l不大于r且最大值和最小值差不小于x。问有几种不同方法。
    参考了其他作者的思路和代码。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    int n,l,r,x,s[16],ans=0,ti;
    int dfs(int i,int sum){
        sum+=s[i];
            if(sum>r) return 0;
        if(sum>=l && sum<=r && s[i]-s[ti]>=x) ans++;
        for(int j=i+1;j<n;j++){
            dfs(j,sum);
        }
    }
    int main() {
        cin>>n>>l>>r>>x;
        for(int i=0; i<n; i++) {
            cin>>s[i];
        }
        sort(s,s+n);
        for(ti=0;ti<n;ti++){
            if(s[ti]+s[ti+1]>r) break;
            dfs(ti,0);
        }
        cout<<ans<<endl;
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:CodeFoeces-550B

          本文链接:https://www.haomeiwen.com/subject/wqmffftx.html