fork download
  1. #include <iostream>
  2. #include <unordered_map>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. vector<int> v;
  8. unordered_map<int, int> table;
  9. unordered_map<int, int> count;
  10. unordered_map<int, int> tmp_ans;
  11. unordered_map<int, int> times;
  12.  
  13. int main(){
  14. int n, a, target, ans = 0;
  15. cin >> n;
  16. while(n--){
  17. cin >> a;
  18. v.push_back(a);
  19. }
  20. cin >> target;
  21.  
  22. for(int i = 0; i < v.size(); i++){
  23. if(table.find(target - v[i]) == table.end()){
  24. table[v[i]] = i;
  25. count[v[i]]++;
  26. }
  27. else{
  28. table[v[i]] = i;
  29. count[v[i]]++;
  30. if(target - v[i] == v[i]){
  31. times[target - v[i]]++;
  32. }
  33. else
  34. tmp_ans[v[i]] += count[target - v[i]];
  35. }
  36. }
  37. for(auto it : times)
  38. ans += ((it.second + 1) * it.second) / 2;
  39. for(auto it : tmp_ans){
  40. ans += it.second;
  41. }
  42.  
  43. cout << ans << "\n";
  44. return 0;
  45. }
  46.  
  47.  
Success #stdin #stdout 0.01s 5516KB
stdin
Standard input is empty
stdout
0