Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "bits/stdc++.h"
- using namespace std;
- int main(){
- #define int long long int
- int sizeSet, lo, hi, aux, cont=0;
- scanf("%lld",&sizeSet);
- scanf("%lld",&lo);
- scanf("%lld",&hi);
- if(lo>hi)swap(lo,hi);
- vector<int>set(0);
- vector<int>setF(1,0);
- vector<int>setS(1,0);
- vector<int>setSumF(1,0);
- vector<int>setSumS(1,0);
- vector<int>::iterator low, high;
- for(int i=0;i<sizeSet;i++){
- scanf("%lld",&aux);
- set.push_back(aux);
- }
- for(int i=0;i<sizeSet/2;i++){
- setF.push_back(set[i]);
- }
- for(int i=sizeSet/2;i<sizeSet;i++){
- setS.push_back(set[i]);
- }
- for(int i=0;i<setF.size();i++){
- for(int j=i+1;j<setF.size();j++){
- setSumF.push_back(setF[i]+setF[j]);
- }
- }
- /*for(int i=0;i<setSumF.size();i++){
- cout<<setSumF[i]<<" ";
- }
- //cout<<"\n";
- for(int i=0;i<setSumS.size();i++){
- cout<<setSumS[i]<<" ";
- }
- //cout<<"\n";*/
- for(int i=0;i<setS.size();i++){
- for(int j=i+1;j<setS.size();j++){
- setSumS.push_back(setS[i]+setS[j]);
- }
- }
- sort(setSumS.begin(),setSumS.end());
- for(int i=0;i<setSumF.size();i++){
- //cout<<"Passei por aqui\n";
- low = lower_bound(setSumS.begin(),setSumS.end(),lo-setSumF[i]);
- high = upper_bound(setSumS.begin(),setSumS.end(),hi-setSumF[i]);
- cont+=(high-low);
- //cout<<cont<<"\n";
- }
- cout<<cont<<"\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement