fork download
  1. // 1,4,-1,2 targ = 4
  2. // index 1,4 |v[1]-v[4]|+|v[1]+v[4]|=target
  3. // [1-2] + [1+2]
  4. // |-1| + |3|
  5. // 4
  6. // index 3,4 |v[3]-v[4]|+|v[3]+v[4]|
  7. // |-1-2|+|-1+2|
  8. // |-3| + |1|
  9. // 4
  10. #include<bits/stdc++.h>
  11. using namespace std;
  12.  
  13. #define ll long long
  14.  
  15. void solve(){
  16. ll n,target;
  17. cin>>n;
  18. vector<ll>v(n);
  19. for(ll &i:v)cin>>i;
  20. cin>>target;
  21.  
  22. if(target&1){
  23. cout<<0<<"\n";
  24. return;
  25. }
  26. ll half_target=target/2;
  27.  
  28. unordered_map<ll,ll>mp;
  29. for(ll i:v)mp[abs(i)]++;
  30.  
  31. ll half_target_element=mp[half_target],less_than_half_target=0;
  32. for(auto &i:mp){
  33. if(i.first<half_target)less_than_half_target+=i.second;
  34. }
  35.  
  36. ll ans=less_than_half_target*half_target_element;
  37. ans+=(half_target_element*(half_target_element-1))/2;
  38. cout<<ans<<"\n";
  39. }
  40.  
  41. int main(){
  42. ios_base::sync_with_stdio(false);
  43. cin.tie(NULL);
  44. solve();
  45. return 0;
  46. }
Success #stdin #stdout 0s 5320KB
stdin
4
1 -2 3 2
4
stdout
3