OneCompiler

Count pairs with given sum

154
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace OneCompiler
{
	public class Program
	{
		public static void Main(string[] args)
		{
			int n = int.Parse(Console.ReadLine());
			
			int[] arr = Array.ConvertAll(Console.ReadLine().Split(" "), new Converter<string,int>(StringToInteger));
			
			int sum = int.Parse(Console.ReadLine());
			
			var pairCount = CountSumPair(arr, sum);
			
			Console.Write(pairCount);
		}
		
		private static int StringToInteger(string s)
		{
		  return int.Parse(s);
		}
		
		private static int CountSumPair(int[] arr, int sum)
		{
		  int n = arr.Length;
		  
		  int pairCount = 0;
		  
		  var dictionary = new Dictionary<int, int>();
		  
		  for (int i = 0; i < n; i++)
		  {
		    int pair = sum - arr[i];
		    
		    if (dictionary.TryGetValue(pair, out var pairFrequency))
		    {
		      pairCount += pairFrequency;
		    }
		    
		    if (dictionary.TryGetValue(arr[i], out var frequency))
		    {
		      dictionary[arr[i]] += 1;
		    }
		    else
		    {
		      dictionary.Add(arr[i], 1);
		    }
		  }
		  
		  return pairCount;
		}
	}
}