CodeFoeces-550B

2018-03-06  本文已影响0人  ss5smi

题目

原题链接: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;
}
上一篇下一篇

猜你喜欢

热点阅读